基础管理页面初始化完成

This commit is contained in:
zhulongchuan 2025-09-16 19:37:49 +08:00
parent 40dea1d487
commit 28f61222d4
5 changed files with 714 additions and 671 deletions

View File

@ -3,7 +3,7 @@ import request from '@/utils/request'
export function listData(query) { export function listData(query) {
return request({ return request({
url: '/uav/equ/info/list', url: '/equ/info/list',
method: 'get', method: 'get',
params: query params: query
}) })
@ -12,7 +12,7 @@ export function listData(query) {
// 详细 // 详细
export function getData(equId) { export function getData(equId) {
return request({ return request({
url: '/uav/equ/info/' + equId, url: '/equ/info/' + equId,
method: 'get' method: 'get'
}) })
} }
@ -22,7 +22,7 @@ export function getData(equId) {
// 新增数据 // 新增数据
export function addData(data) { export function addData(data) {
return request({ return request({
url: '/uav/equ/info', url: '/equ/info',
method: 'post', method: 'post',
data: data data: data
}) })
@ -31,7 +31,7 @@ export function addData(data) {
// 修改数据 // 修改数据
export function updateData(data) { export function updateData(data) {
return request({ return request({
url: '/uav/equ/info', url: '/equ/info',
method: 'put', method: 'put',
data: data data: data
}) })
@ -40,7 +40,7 @@ export function updateData(data) {
// 删除 // 删除
export function delData(equId) { export function delData(equId) {
return request({ return request({
url: '/uav/equ/info/' + equId, url: '/equ/info/' + equId,
method: 'delete' method: 'delete'
}) })
} }
@ -49,7 +49,7 @@ export function delData(equId) {
// 导出数据 // 导出数据
export function exportData(query) { export function exportData(query) {
return request({ return request({
url: '/uav/equ/info/export', url: '/equ/info/export',
method: 'get', method: 'get',
params: query params: query
}) })
@ -58,7 +58,7 @@ export function exportData(query) {
// 【用户】获取部门列表 // 【用户】获取部门列表
export function GET_deptTree_for_equ (data) { export function GET_deptTree_for_equ (data) {
return request({ return request({
url: '/uav/equ/info/getTjTree', url: '/equ/info/getTjTree',
method: 'get' method: 'get'
}) })
} }
@ -67,7 +67,7 @@ export function GET_deptTree_for_equ (data) {
// 详细 // 详细
export function getEquModel(typeId) { export function getEquModel(typeId) {
return request({ return request({
url: '/uav/equ/info/getEquModel/' + typeId, url: '/equ/info/getEquModel/' + typeId,
method: 'get' method: 'get'
}) })
} }
@ -76,7 +76,7 @@ export function getEquModel(typeId) {
// 查询设备型号列表 // 查询设备型号列表
export function listEquInfoList(query) { export function listEquInfoList(query) {
return request({ return request({
url: '/uav/equ/info/list', url: '/equ/info/list',
method: 'get', method: 'get',
params: query params: query
}) })
@ -85,7 +85,7 @@ export function listEquInfoList(query) {
// 获取警员缓存 // 获取警员缓存
export function getTaskPoliceInfoTask() { export function getTaskPoliceInfoTask() {
return request({ return request({
url: '/uav/cacheApi/getTaskPoliceInfoTask', url: '/cacheApi/getTaskPoliceInfoTask',
method: 'post' method: 'post'
}) })
} }

View File

@ -16,20 +16,12 @@
<!--用户数据--> <!--用户数据-->
<pane size="84"> <pane size="84">
<el-col> <el-col>
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
<el-form-item label="用户名称" prop="userName"> <el-form-item label="设备编号" prop="equCode">
<el-input v-model="queryParams.userName" placeholder="请输入用户名称" clearable style="width: 240px" @keyup.enter.native="handleQuery" /> <el-input v-model="queryParams.equCode" placeholder="请输入设备编号" clearable style="width: 240px" @keyup.enter.native="handleQuery" />
</el-form-item> </el-form-item>
<el-form-item label="手机号码" prop="phonenumber"> <el-form-item label="设备序列号" prop="equSn">
<el-input v-model="queryParams.phonenumber" placeholder="请输入手机号码" clearable style="width: 240px" @keyup.enter.native="handleQuery" /> <el-input v-model="queryParams.equSn" placeholder="请输入设备序列号" clearable style="width: 240px" @keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select v-model="queryParams.status" placeholder="用户状态" clearable style="width: 240px">
<el-option v-for="dict in dict.type.sys_normal_disable" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="创建时间">
<el-date-picker v-model="dateRange" style="width: 240px" value-format="yyyy-MM-dd" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
@ -41,12 +33,12 @@
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['system:user:add']">新增</el-button> <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['system:user:add']">新增</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <!-- <el-col :span="1.5">
<el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate" v-hasPermi="['system:user:edit']">修改</el-button> <el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate" v-hasPermi="['system:user:edit']">修改</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete" v-hasPermi="['system:user:remove']">删除</el-button> <el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete" v-hasPermi="['system:user:remove']">删除</el-button>
</el-col> </el-col> -->
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="info" plain icon="el-icon-upload2" size="mini" @click="handleImport" v-hasPermi="['system:user:import']">导入</el-button> <el-button type="info" plain icon="el-icon-upload2" size="mini" @click="handleImport" v-hasPermi="['system:user:import']">导入</el-button>
</el-col> </el-col>
@ -57,33 +49,57 @@
</el-row> </el-row>
<el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="50" align="center" /> <!-- <el-table-column label="设备编号" align="center" key="equId" prop="equId" /> -->
<el-table-column label="用户编号" align="center" key="userId" prop="userId" v-if="columns.userId.visible" /> <el-table-column label="设备编号" align="center" key="equCode" prop="equCode" />
<el-table-column label="用户名称" align="center" key="userName" prop="userName" v-if="columns.userName.visible" :show-overflow-tooltip="true" /> <el-table-column label="部门" align="center" key="deptName" prop="deptName" />
<el-table-column label="用户昵称" align="center" key="nickName" prop="nickName" v-if="columns.nickName.visible" :show-overflow-tooltip="true" /> <el-table-column label="品牌型号" align="center" key="modelId" prop="modelId" />
<el-table-column label="部门" align="center" key="deptName" prop="dept.deptName" v-if="columns.deptName.visible" :show-overflow-tooltip="true" /> <el-table-column label="设备分类" align="center" key="classify" prop="classify" >
<el-table-column label="手机号码" align="center" key="phonenumber" prop="phonenumber" v-if="columns.phonenumber.visible" width="120" /> <template #default="scope">
<el-table-column label="状态" align="center" key="status" v-if="columns.status.visible"> <dict-tag :options="dict.type.dev_equ_classify" :value="scope.row.classify" />
<template slot-scope="scope"> </template>
<el-switch v-model="scope.row.status" active-value="0" inactive-value="1" @change="handleStatusChange(scope.row)"></el-switch>
</template>
</el-table-column> </el-table-column>
<el-table-column label="创建时间" align="center" prop="createTime" v-if="columns.createTime.visible" width="160"> <el-table-column label="设备序列号" align="center" key="equSn" prop="equSn" />
<template slot-scope="scope"> <el-table-column label="任务荷载" align="center" key="equLoad" prop="equLoad"/>
<span>{{ parseTime(scope.row.createTime) }}</span> <el-table-column label="设备状态" align="center" key="equSts" prop="equSts" >
</template> <template #default="scope">
<dict-tag :options="dict.type.dev_health_status" :value="scope.row.equSts" />
</template>
</el-table-column> </el-table-column>
<el-table-column label="归属权是否属于本单位" align="center" key="attribution" prop="attribution" >
<template #default="scope">
<dict-tag :options="dict.type.equ_attribution_sts" :value="scope.row.attribution" />
</template>
</el-table-column>
<el-table-column label="保险状态" align="center" key="insuranceSts" prop="insuranceSts" />
<el-table-column label="保险期限" align="center" key="mtnDate" prop="mtnDate"/>
<el-table-column label="备注" align="center" key="remark" prop="remark" />
<!-- <el-table-column prop="equCode" label="设备编号" header-align="center" align="center">
<template #default="{ row }">
<span @click="downloadText(row.equCode)"
style="cursor: pointer; color: blue;">{{ row.equCode }}</span>
</template>
</el-table-column>
<el-table-column label="二维码" align="center" width="150">
<template #default="{ row }">
<div class="qrcode-container" @click="downloadQRCode(row)"
@dblclick="zoomQRCode(row)">
<img :src="row.qrCode" alt="QR Code" class="qrcode-image" />
</div>
</template>
</el-table-column> -->
<el-table-column label="操作" align="center" width="160" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" width="160" class-name="small-padding fixed-width">
<template slot-scope="scope" v-if="scope.row.userId !== 1"> <template slot-scope="scope" v-if="scope.row.userId !== 1">
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['system:user:edit']">修改</el-button> <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['system:user:edit']">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['system:user:remove']">删除</el-button> <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['system:user:remove']">删除</el-button>
<el-dropdown size="mini" @command="(command) => handleCommand(command, scope.row)" v-hasPermi="['system:user:resetPwd', 'system:user:edit']"> <!-- <el-dropdown size="mini" @command="(command) => handleCommand(command, scope.row)" v-hasPermi="['system:user:resetPwd', 'system:user:edit']">
<el-button size="mini" type="text" icon="el-icon-d-arrow-right">更多</el-button> <el-button size="mini" type="text" icon="el-icon-d-arrow-right">更多</el-button>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item command="handleResetPwd" icon="el-icon-key" v-hasPermi="['system:user:resetPwd']">重置密码</el-dropdown-item> <el-dropdown-item command="handleResetPwd" icon="el-icon-key" v-hasPermi="['system:user:resetPwd']">重置密码</el-dropdown-item>
<el-dropdown-item command="handleAuthRole" icon="el-icon-circle-check" v-hasPermi="['system:user:edit']">分配角色</el-dropdown-item> <el-dropdown-item command="handleAuthRole" icon="el-icon-circle-check" v-hasPermi="['system:user:edit']">分配角色</el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown> -->
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -97,74 +113,67 @@
<!-- 添加或修改用户配置对话框 --> <!-- 添加或修改用户配置对话框 -->
<el-dialog :title="title" :visible.sync="open" width="600px" append-to-body> <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="用户昵称" prop="nickName"> <el-form-item label="品牌型号">
<el-input v-model="form.nickName" placeholder="请输入用户昵称" maxlength="30" /> <el-select v-model="form.modelId" placeholder="请选择品牌型号">
</el-form-item> <el-option v-for="dict in dict.type.equ_model_info" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
</el-col> </el-select>
<el-col :span="12"> </el-form-item>
<el-form-item label="归属部门" prop="deptId"> </el-col>
<treeselect v-model="form.deptId" :options="enabledDeptOptions" :show-count="true" placeholder="请选择归属部门" /> <el-col :span="12">
</el-form-item> <el-form-item label="设备状态">
</el-col> <el-select v-model="form.equSts" placeholder="请选择设备状态">
</el-row> <el-option v-for="dict in dict.type.dev_health_status" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
<el-row> </el-select>
<el-col :span="12"> </el-form-item>
<el-form-item label="手机号码" prop="phonenumber"> </el-col>
<el-input v-model="form.phonenumber" placeholder="请输入手机号码" maxlength="11" /> </el-row>
</el-form-item> <el-row>
</el-col> <el-col :span="12">
<el-col :span="12"> <el-form-item label="设备分类">
<el-form-item label="邮箱" prop="email"> <el-select v-model="form.classify" placeholder="请选择设备分类">
<el-input v-model="form.email" placeholder="请输入邮箱" maxlength="50" /> <el-option v-for="dict in dict.type.dev_equ_classify" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
</el-form-item> </el-select>
</el-col> </el-form-item>
</el-row> </el-col>
<el-row> <el-col :span="12">
<el-col :span="12"> <el-form-item label="序列号" prop="equSn">
<el-form-item v-if="form.userId == undefined" label="用户名称" prop="userName"> <el-input v-model="form.equSn" placeholder="请输入设备序列号" maxlength="30" />
<el-input v-model="form.userName" placeholder="请输入用户名称" maxlength="30" /> </el-form-item>
</el-form-item> </el-col>
</el-col> </el-row>
<el-col :span="12"> <el-row>
<el-form-item v-if="form.userId == undefined" label="用户密码" prop="password"> <el-col :span="12">
<el-input v-model="form.password" placeholder="请输入用户密码" type="password" maxlength="20" show-password /> <el-form-item label="任务荷载" prop="equLoad">
</el-form-item> <el-input v-model="form.equLoad" placeholder="请输入设备序列号" maxlength="30" />
</el-col> </el-form-item>
</el-row> </el-col>
<el-row> <el-col :span="12">
<el-col :span="12"> <el-form-item label="归属部门" prop="deptId">
<el-form-item label="用户性别"> <treeselect v-model="form.deptId" :options="enabledDeptOptions" :show-count="true" placeholder="请选择归属部门" />
<el-select v-model="form.sex" placeholder="请选择性别"> </el-form-item>
<el-option v-for="dict in dict.type.sys_user_sex" :key="dict.value" :label="dict.label" :value="dict.value"></el-option> </el-col>
</el-select> </el-row>
</el-form-item> <el-form-item label="是否归属本单位">
</el-col> <el-select v-model="form.attribution" placeholder="请选择归属权">
<el-col :span="12"> <el-option v-for="dict in dict.type.equ_attribution_sts" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
<el-form-item label="状态"> </el-select>
<el-radio-group v-model="form.status"> </el-form-item>
<el-radio v-for="dict in dict.type.sys_normal_disable" :key="dict.value" :label="dict.value">{{ dict.label }}</el-radio> <el-row>
</el-radio-group> <el-col :span="12">
</el-form-item> <el-form-item label="采购日期" prop="purDate">
</el-col> <el-date-picker clearable v-model="form.purDate" type="date" value-format="yyyy-MM-dd" placeholder="采购日期"></el-date-picker>
</el-row> </el-form-item>
<el-row> </el-col>
<el-col :span="12"> </el-row>
<el-form-item label="岗位"> <el-row>
<el-select v-model="form.postIds" multiple placeholder="请选择岗位"> <el-col :span="12">
<el-option v-for="item in postOptions" :key="item.postId" :label="item.postName" :value="item.postId" :disabled="item.status == 1" ></el-option> <el-form-item label="保险期限" prop="mtnDate">
</el-select> <el-date-picker clearable v-model="form.mtnDate" type="date" value-format="yyyy-MM-dd" placeholder="保险期限"></el-date-picker>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> </el-row>
<el-form-item label="角色">
<el-select v-model="form.roleIds" multiple placeholder="请选择角色">
<el-option v-for="item in roleOptions" :key="item.roleId" :label="item.roleName" :value="item.roleId" :disabled="item.status == 1"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="备注"> <el-form-item label="备注">
@ -202,6 +211,7 @@
<script> <script>
import { listUser, getUser, delUser, addUser, updateUser, resetUserPwd, changeUserStatus, deptTreeSelect } from "@/api/system/user" import { listUser, getUser, delUser, addUser, updateUser, resetUserPwd, changeUserStatus, deptTreeSelect } from "@/api/system/user"
import { listData, getData, delData, addData, updateData } from "@/api/system/equInfoapi"
import { getToken } from "@/utils/auth" import { getToken } from "@/utils/auth"
import Treeselect from "@riophae/vue-treeselect" import Treeselect from "@riophae/vue-treeselect"
import "@riophae/vue-treeselect/dist/vue-treeselect.css" import "@riophae/vue-treeselect/dist/vue-treeselect.css"
@ -210,7 +220,7 @@ import "splitpanes/dist/splitpanes.css"
export default { export default {
name: "User", name: "User",
dicts: ['sys_normal_disable', 'sys_user_sex'], dicts: ['sys_normal_disable', 'sys_user_sex','dev_equ_classify','dev_health_status', 'equ_attribution_sts','equ_model_info'],
components: { Treeselect, Splitpanes, Pane }, components: { Treeselect, Splitpanes, Pane },
data() { data() {
return { return {
@ -265,16 +275,14 @@ export default {
// //
headers: { Authorization: "Bearer " + getToken() }, headers: { Authorization: "Bearer " + getToken() },
// //
url: process.env.VUE_APP_BASE_API + "/system/user/importData" url: process.env.VUE_APP_BASE_API + "/equ/info/importData"
}, },
// //
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
userName: undefined, equCode: '',
phonenumber: undefined, equSn: '',
status: undefined,
deptId: undefined
}, },
// //
columns: { columns: {
@ -288,32 +296,41 @@ export default {
}, },
// //
rules: { rules: {
userName: [ // userName: [
{ required: true, message: "用户名称不能为空", trigger: "blur" }, // { required: true, message: "", trigger: "blur" },
{ min: 2, max: 20, message: '用户名称长度必须介于 2 和 20 之间', trigger: 'blur' } // { min: 2, max: 20, message: ' 2 20 ', trigger: 'blur' }
// ],
modelId: [
{ required: true, message: "品牌型号不能为空", trigger: "blur" }
], ],
nickName: [ equSts: [
{ required: true, message: "用户昵称不能为空", trigger: "blur" } { required: true, message: "状态不能为空", trigger: "blur" }
], ],
password: [ equSn: [
{ required: true, message: "用户密码不能为空", trigger: "blur" }, { required: true, message: "序列号不能为空", trigger: "blur" }
{ min: 5, max: 20, message: '用户密码长度必须介于 5 和 20 之间', trigger: 'blur' },
{ pattern: /^[^<>"'|\\]+$/, message: "不能包含非法字符:< > \" ' \\\ |", trigger: "blur" }
], ],
email: [ deptId: [
{ { required: true, message: "部门不能为空", trigger: "blur" }
type: "email",
message: "请输入正确的邮箱地址",
trigger: ["blur", "change"]
}
], ],
phonenumber: [ // password: [
{ // { required: true, message: "", trigger: "blur" },
pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, // { min: 5, max: 20, message: ' 5 20 ', trigger: 'blur' },
message: "请输入正确的手机号码", // { pattern: /^[^<>"'|\\]+$/, message: "< > \" ' \\\ |", trigger: "blur" }
trigger: "blur" // ],
} // email: [
] // {
// type: "email",
// message: "",
// trigger: ["blur", "change"]
// }
// ],
// phonenumber: [
// {
// pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
// message: "",
// trigger: "blur"
// }
// ]
} }
} }
}, },
@ -334,7 +351,8 @@ export default {
/** 查询用户列表 */ /** 查询用户列表 */
getList() { getList() {
this.loading = true this.loading = true
listUser(this.addDateRange(this.queryParams, this.dateRange)).then(response => { this.queryParams.typeId = 10
listData(this.queryParams).then(response => {
this.userList = response.rows this.userList = response.rows
this.total = response.total this.total = response.total
this.loading = false this.loading = false
@ -389,18 +407,20 @@ export default {
// //
reset() { reset() {
this.form = { this.form = {
userId: undefined, // userId: undefined,
deptId: undefined, // deptId: undefined,
userName: undefined, // userName: undefined,
nickName: undefined, // nickName: undefined,
password: undefined, // password: undefined,
phonenumber: undefined, // phonenumber: undefined,
email: undefined, // email: undefined,
sex: undefined, // sex: undefined,
status: "0", // status: "0",
remark: undefined, // remark: undefined,
postIds: [], // postIds: [],
roleIds: [] // typeId: 10
equCode: '',
equSn: '',
} }
this.resetForm("form") this.resetForm("form")
}, },
@ -439,27 +459,18 @@ export default {
/** 新增按钮操作 */ /** 新增按钮操作 */
handleAdd() { handleAdd() {
this.reset() this.reset()
getUser().then(response => { this.open = true
this.postOptions = response.posts this.title = "添加"
this.roleOptions = response.roles this.form.typeId =10
this.open = true
this.title = "添加用户"
this.form.password = this.initPassword
})
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
handleUpdate(row) { handleUpdate(row) {
this.reset() this.reset()
const userId = row.userId || this.ids const userId = row.equId || this.ids
getUser(userId).then(response => { getData(userId).then(response => {
this.form = response.data this.form = response.data
this.postOptions = response.posts
this.roleOptions = response.roles
this.$set(this.form, "postIds", response.postIds)
this.$set(this.form, "roleIds", response.roleIds)
this.open = true this.open = true
this.title = "修改用户" this.title = "修改"
this.form.password = ""
}) })
}, },
/** 重置密码按钮操作 */ /** 重置密码按钮操作 */
@ -490,14 +501,18 @@ export default {
submitForm: function() { submitForm: function() {
this.$refs["form"].validate(valid => { this.$refs["form"].validate(valid => {
if (valid) { if (valid) {
if (this.form.userId != undefined) { this.form.typeId = 10
updateUser(this.form).then(response => { console.log("this.form.deptId",this.form.deptId)
this.form.organId = this.form.deptId
console.log("this.form.organId",this.form.organId)
if (this.form.equId != undefined) {
updateData(this.form).then(response => {
this.$modal.msgSuccess("修改成功") this.$modal.msgSuccess("修改成功")
this.open = false this.open = false
this.getList() this.getList()
}) })
} else { } else {
addUser(this.form).then(response => { addData(this.form).then(response => {
this.$modal.msgSuccess("新增成功") this.$modal.msgSuccess("新增成功")
this.open = false this.open = false
this.getList() this.getList()
@ -508,9 +523,9 @@ export default {
}, },
/** 删除按钮操作 */ /** 删除按钮操作 */
handleDelete(row) { handleDelete(row) {
const userIds = row.userId || this.ids const userIds = row.equId || this.ids
this.$modal.confirm('是否确认删除用户编号为"' + userIds + '"的数据项?').then(function() { this.$modal.confirm('是否确认删除编号为"' + userIds + '"的数据项?').then(function() {
return delUser(userIds) return delData(userIds)
}).then(() => { }).then(() => {
this.getList() this.getList()
this.$modal.msgSuccess("删除成功") this.$modal.msgSuccess("删除成功")
@ -518,9 +533,9 @@ export default {
}, },
/** 导出按钮操作 */ /** 导出按钮操作 */
handleExport() { handleExport() {
this.download('system/user/export', { this.download('equ/info/export', {
...this.queryParams ...this.queryParams
}, `user_${new Date().getTime()}.xlsx`) }, `equInfo_${new Date().getTime()}.xlsx`)
}, },
/** 导入按钮操作 */ /** 导入按钮操作 */
handleImport() { handleImport() {
@ -529,8 +544,8 @@ export default {
}, },
/** 下载模板操作 */ /** 下载模板操作 */
importTemplate() { importTemplate() {
this.download('system/user/importTemplate', { this.download('equ/info/export', {
}, `user_template_${new Date().getTime()}.xlsx`) }, `equ_template_${new Date().getTime()}.xlsx`)
}, },
// //
handleFileUploadProgress(event, file, fileList) { handleFileUploadProgress(event, file, fileList) {

View File

@ -16,20 +16,12 @@
<!--用户数据--> <!--用户数据-->
<pane size="84"> <pane size="84">
<el-col> <el-col>
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
<el-form-item label="用户名称" prop="userName"> <el-form-item label="设备编号" prop="equCode">
<el-input v-model="queryParams.userName" placeholder="请输入用户名称" clearable style="width: 240px" @keyup.enter.native="handleQuery" /> <el-input v-model="queryParams.equCode" placeholder="请输入设备编号" clearable style="width: 240px" @keyup.enter.native="handleQuery" />
</el-form-item> </el-form-item>
<el-form-item label="手机号码" prop="phonenumber"> <el-form-item label="设备序列号" prop="equSn">
<el-input v-model="queryParams.phonenumber" placeholder="请输入手机号码" clearable style="width: 240px" @keyup.enter.native="handleQuery" /> <el-input v-model="queryParams.equSn" placeholder="请输入设备序列号" clearable style="width: 240px" @keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select v-model="queryParams.status" placeholder="用户状态" clearable style="width: 240px">
<el-option v-for="dict in dict.type.sys_normal_disable" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="创建时间">
<el-date-picker v-model="dateRange" style="width: 240px" value-format="yyyy-MM-dd" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
@ -41,12 +33,12 @@
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['system:user:add']">新增</el-button> <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['system:user:add']">新增</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <!-- <el-col :span="1.5">
<el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate" v-hasPermi="['system:user:edit']">修改</el-button> <el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate" v-hasPermi="['system:user:edit']">修改</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete" v-hasPermi="['system:user:remove']">删除</el-button> <el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete" v-hasPermi="['system:user:remove']">删除</el-button>
</el-col> </el-col> -->
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="info" plain icon="el-icon-upload2" size="mini" @click="handleImport" v-hasPermi="['system:user:import']">导入</el-button> <el-button type="info" plain icon="el-icon-upload2" size="mini" @click="handleImport" v-hasPermi="['system:user:import']">导入</el-button>
</el-col> </el-col>
@ -57,33 +49,54 @@
</el-row> </el-row>
<el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="50" align="center" /> <!-- <el-table-column label="设备编号" align="center" key="equId" prop="equId" /> -->
<el-table-column label="用户编号" align="center" key="userId" prop="userId" v-if="columns.userId.visible" /> <el-table-column label="设备编号" align="center" key="equCode" prop="equCode" />
<el-table-column label="用户名称" align="center" key="userName" prop="userName" v-if="columns.userName.visible" :show-overflow-tooltip="true" /> <el-table-column label="部门" align="center" key="deptName" prop="deptName" />
<el-table-column label="用户昵称" align="center" key="nickName" prop="nickName" v-if="columns.nickName.visible" :show-overflow-tooltip="true" /> <el-table-column label="国标码" align="center" key="gbCode" prop="gbCode" />
<el-table-column label="部门" align="center" key="deptName" prop="dept.deptName" v-if="columns.deptName.visible" :show-overflow-tooltip="true" /> <el-table-column label="品牌型号" align="center" key="modelId" prop="modelId" />
<el-table-column label="手机号码" align="center" key="phonenumber" prop="phonenumber" v-if="columns.phonenumber.visible" width="120" /> <!-- <el-table-column label="设备分类" align="center" key="classify" prop="classify" >
<el-table-column label="状态" align="center" key="status" v-if="columns.status.visible"> <template #default="scope">
<template slot-scope="scope"> <dict-tag :options="dict.type.dev_equ_classify" :value="scope.row.classify" />
<el-switch v-model="scope.row.status" active-value="0" inactive-value="1" @change="handleStatusChange(scope.row)"></el-switch> </template>
</template> </el-table-column> -->
</el-table-column> <el-table-column label="设备序列号" align="center" key="equSn" prop="equSn" />
<el-table-column label="创建时间" align="center" prop="createTime" v-if="columns.createTime.visible" width="160"> <el-table-column label="责任人" align="center" key="mngName" prop="mngName" />
<template slot-scope="scope"> <el-table-column label="责任人警号" align="center" key="mngCode" prop="mngCode" />
<span>{{ parseTime(scope.row.createTime) }}</span> <el-table-column label="设备状态" align="center" key="equSts" prop="equSts" >
</template> <template #default="scope">
<dict-tag :options="dict.type.dev_health_status" :value="scope.row.equSts" />
</template>
</el-table-column> </el-table-column>
<el-table-column label="保险状态" align="center" key="insuranceSts" prop="insuranceSts" />
<el-table-column label="保险期限" align="center" key="mtnDate" prop="mtnDate"/>
<el-table-column label="备注" align="center" key="remark" prop="remark" />
<!-- <el-table-column prop="equCode" label="设备编号" header-align="center" align="center">
<template #default="{ row }">
<span @click="downloadText(row.equCode)"
style="cursor: pointer; color: blue;">{{ row.equCode }}</span>
</template>
</el-table-column>
<el-table-column label="二维码" align="center" width="150">
<template #default="{ row }">
<div class="qrcode-container" @click="downloadQRCode(row)"
@dblclick="zoomQRCode(row)">
<img :src="row.qrCode" alt="QR Code" class="qrcode-image" />
</div>
</template>
</el-table-column> -->
<el-table-column label="操作" align="center" width="160" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" width="160" class-name="small-padding fixed-width">
<template slot-scope="scope" v-if="scope.row.userId !== 1"> <template slot-scope="scope" v-if="scope.row.userId !== 1">
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['system:user:edit']">修改</el-button> <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['system:user:edit']">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['system:user:remove']">删除</el-button> <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['system:user:remove']">删除</el-button>
<el-dropdown size="mini" @command="(command) => handleCommand(command, scope.row)" v-hasPermi="['system:user:resetPwd', 'system:user:edit']"> <!-- <el-dropdown size="mini" @command="(command) => handleCommand(command, scope.row)" v-hasPermi="['system:user:resetPwd', 'system:user:edit']">
<el-button size="mini" type="text" icon="el-icon-d-arrow-right">更多</el-button> <el-button size="mini" type="text" icon="el-icon-d-arrow-right">更多</el-button>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item command="handleResetPwd" icon="el-icon-key" v-hasPermi="['system:user:resetPwd']">重置密码</el-dropdown-item> <el-dropdown-item command="handleResetPwd" icon="el-icon-key" v-hasPermi="['system:user:resetPwd']">重置密码</el-dropdown-item>
<el-dropdown-item command="handleAuthRole" icon="el-icon-circle-check" v-hasPermi="['system:user:edit']">分配角色</el-dropdown-item> <el-dropdown-item command="handleAuthRole" icon="el-icon-circle-check" v-hasPermi="['system:user:edit']">分配角色</el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown> -->
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -97,74 +110,65 @@
<!-- 添加或修改用户配置对话框 --> <!-- 添加或修改用户配置对话框 -->
<el-dialog :title="title" :visible.sync="open" width="600px" append-to-body> <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="用户昵称" prop="nickName"> <el-form-item label="品牌型号">
<el-input v-model="form.nickName" placeholder="请输入用户昵称" maxlength="30" /> <el-select v-model="form.modelId" placeholder="请选择品牌型号">
</el-form-item> <el-option v-for="dict in dict.type.equ_model_info" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
</el-col> </el-select>
<el-col :span="12"> </el-form-item>
<el-form-item label="归属部门" prop="deptId"> </el-col>
<treeselect v-model="form.deptId" :options="enabledDeptOptions" :show-count="true" placeholder="请选择归属部门" /> <el-col :span="12">
</el-form-item> <el-form-item label="设备状态">
</el-col> <el-select v-model="form.equSts" placeholder="请选择设备状态">
</el-row> <el-option v-for="dict in dict.type.dev_health_status" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
<el-row> </el-select>
<el-col :span="12"> </el-form-item>
<el-form-item label="手机号码" prop="phonenumber"> </el-col>
<el-input v-model="form.phonenumber" placeholder="请输入手机号码" maxlength="11" /> </el-row>
</el-form-item> <el-row>
</el-col> <el-col :span="12">
<el-col :span="12"> <el-form-item label="归属部门" prop="deptId">
<el-form-item label="邮箱" prop="email"> <treeselect v-model="form.deptId" :options="enabledDeptOptions" :show-count="true" placeholder="请选择归属部门" />
<el-input v-model="form.email" placeholder="请输入邮箱" maxlength="50" /> </el-form-item>
</el-form-item> </el-col>
</el-col> <el-col :span="12">
</el-row> <el-form-item label="序列号" prop="equSn">
<el-row> <el-input v-model="form.equSn" placeholder="请输入设备序列号" maxlength="30" />
<el-col :span="12"> </el-form-item>
<el-form-item v-if="form.userId == undefined" label="用户名称" prop="userName"> </el-col>
<el-input v-model="form.userName" placeholder="请输入用户名称" maxlength="30" /> </el-row>
</el-form-item> <el-row>
</el-col> <el-col :span="12">
<el-col :span="12"> <el-form-item label="责任人" prop="mngName">
<el-form-item v-if="form.userId == undefined" label="用户密码" prop="password"> <el-input v-model="form.mngName" placeholder="请输入责任人" maxlength="30" />
<el-input v-model="form.password" placeholder="请输入用户密码" type="password" maxlength="20" show-password /> </el-form-item>
</el-form-item> </el-col>
</el-col> <el-col :span="12">
</el-row> <el-form-item label="责任警号" prop="mngCode">
<el-row> <el-input v-model="form.mngCode" placeholder="请输入责任警号" maxlength="30" />
<el-col :span="12"> </el-form-item>
<el-form-item label="用户性别"> </el-col>
<el-select v-model="form.sex" placeholder="请选择性别"> </el-row>
<el-option v-for="dict in dict.type.sys_user_sex" :key="dict.value" :label="dict.label" :value="dict.value"></el-option> <el-row>
</el-select> <el-col :span="12">
</el-form-item> <el-form-item label="国标码" prop="gbCode">
</el-col> <el-input v-model="form.gbCode" placeholder="请输入国标码" maxlength="30" />
<el-col :span="12"> </el-form-item>
<el-form-item label="状态"> </el-col>
<el-radio-group v-model="form.status"> <el-col :span="12">
<el-radio v-for="dict in dict.type.sys_normal_disable" :key="dict.value" :label="dict.value">{{ dict.label }}</el-radio> <el-form-item label="采购日期" prop="purDate">
</el-radio-group> <el-date-picker clearable v-model="form.purDate" type="date" value-format="yyyy-MM-dd" placeholder="采购日期"></el-date-picker>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="岗位"> <el-form-item label="保险期限" prop="mtnDate">
<el-select v-model="form.postIds" multiple placeholder="请选择岗位"> <el-date-picker clearable v-model="form.mtnDate" type="date" value-format="yyyy-MM-dd" placeholder="保险期限"></el-date-picker>
<el-option v-for="item in postOptions" :key="item.postId" :label="item.postName" :value="item.postId" :disabled="item.status == 1" ></el-option> </el-form-item>
</el-select> </el-col>
</el-form-item> </el-row>
</el-col>
<el-col :span="12">
<el-form-item label="角色">
<el-select v-model="form.roleIds" multiple placeholder="请选择角色">
<el-option v-for="item in roleOptions" :key="item.roleId" :label="item.roleName" :value="item.roleId" :disabled="item.status == 1"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="备注"> <el-form-item label="备注">
@ -202,6 +206,7 @@
<script> <script>
import { listUser, getUser, delUser, addUser, updateUser, resetUserPwd, changeUserStatus, deptTreeSelect } from "@/api/system/user" import { listUser, getUser, delUser, addUser, updateUser, resetUserPwd, changeUserStatus, deptTreeSelect } from "@/api/system/user"
import { listData, getData, delData, addData, updateData } from "@/api/system/equInfoapi"
import { getToken } from "@/utils/auth" import { getToken } from "@/utils/auth"
import Treeselect from "@riophae/vue-treeselect" import Treeselect from "@riophae/vue-treeselect"
import "@riophae/vue-treeselect/dist/vue-treeselect.css" import "@riophae/vue-treeselect/dist/vue-treeselect.css"
@ -210,7 +215,7 @@ import "splitpanes/dist/splitpanes.css"
export default { export default {
name: "User", name: "User",
dicts: ['sys_normal_disable', 'sys_user_sex'], dicts: ['sys_normal_disable', 'sys_user_sex','dev_equ_classify','dev_health_status', 'equ_attribution_sts','equ_model_info'],
components: { Treeselect, Splitpanes, Pane }, components: { Treeselect, Splitpanes, Pane },
data() { data() {
return { return {
@ -265,16 +270,14 @@ export default {
// //
headers: { Authorization: "Bearer " + getToken() }, headers: { Authorization: "Bearer " + getToken() },
// //
url: process.env.VUE_APP_BASE_API + "/system/user/importData" url: process.env.VUE_APP_BASE_API + "/equ/info/importData"
}, },
// //
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
userName: undefined, equCode: '',
phonenumber: undefined, equSn: '',
status: undefined,
deptId: undefined
}, },
// //
columns: { columns: {
@ -288,32 +291,41 @@ export default {
}, },
// //
rules: { rules: {
userName: [ // userName: [
{ required: true, message: "用户名称不能为空", trigger: "blur" }, // { required: true, message: "", trigger: "blur" },
{ min: 2, max: 20, message: '用户名称长度必须介于 2 和 20 之间', trigger: 'blur' } // { min: 2, max: 20, message: ' 2 20 ', trigger: 'blur' }
// ],
modelId: [
{ required: true, message: "品牌型号不能为空", trigger: "blur" }
], ],
nickName: [ equSts: [
{ required: true, message: "用户昵称不能为空", trigger: "blur" } { required: true, message: "状态不能为空", trigger: "blur" }
], ],
password: [ equSn: [
{ required: true, message: "用户密码不能为空", trigger: "blur" }, { required: true, message: "序列号不能为空", trigger: "blur" }
{ min: 5, max: 20, message: '用户密码长度必须介于 5 和 20 之间', trigger: 'blur' },
{ pattern: /^[^<>"'|\\]+$/, message: "不能包含非法字符:< > \" ' \\\ |", trigger: "blur" }
], ],
email: [ deptId: [
{ { required: true, message: "部门不能为空", trigger: "blur" }
type: "email",
message: "请输入正确的邮箱地址",
trigger: ["blur", "change"]
}
], ],
phonenumber: [ // password: [
{ // { required: true, message: "", trigger: "blur" },
pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, // { min: 5, max: 20, message: ' 5 20 ', trigger: 'blur' },
message: "请输入正确的手机号码", // { pattern: /^[^<>"'|\\]+$/, message: "< > \" ' \\\ |", trigger: "blur" }
trigger: "blur" // ],
} // email: [
] // {
// type: "email",
// message: "",
// trigger: ["blur", "change"]
// }
// ],
// phonenumber: [
// {
// pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
// message: "",
// trigger: "blur"
// }
// ]
} }
} }
}, },
@ -334,7 +346,8 @@ export default {
/** 查询用户列表 */ /** 查询用户列表 */
getList() { getList() {
this.loading = true this.loading = true
listUser(this.addDateRange(this.queryParams, this.dateRange)).then(response => { this.queryParams.typeId = 13
listData(this.queryParams).then(response => {
this.userList = response.rows this.userList = response.rows
this.total = response.total this.total = response.total
this.loading = false this.loading = false
@ -389,18 +402,20 @@ export default {
// //
reset() { reset() {
this.form = { this.form = {
userId: undefined, // userId: undefined,
deptId: undefined, // deptId: undefined,
userName: undefined, // userName: undefined,
nickName: undefined, // nickName: undefined,
password: undefined, // password: undefined,
phonenumber: undefined, // phonenumber: undefined,
email: undefined, // email: undefined,
sex: undefined, // sex: undefined,
status: "0", // status: "0",
remark: undefined, // remark: undefined,
postIds: [], // postIds: [],
roleIds: [] // typeId: 10
equCode: '',
equSn: '',
} }
this.resetForm("form") this.resetForm("form")
}, },
@ -439,27 +454,18 @@ export default {
/** 新增按钮操作 */ /** 新增按钮操作 */
handleAdd() { handleAdd() {
this.reset() this.reset()
getUser().then(response => { this.open = true
this.postOptions = response.posts this.title = "添加"
this.roleOptions = response.roles this.form.typeId =12
this.open = true
this.title = "添加用户"
this.form.password = this.initPassword
})
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
handleUpdate(row) { handleUpdate(row) {
this.reset() this.reset()
const userId = row.userId || this.ids const userId = row.equId || this.ids
getUser(userId).then(response => { getData(userId).then(response => {
this.form = response.data this.form = response.data
this.postOptions = response.posts
this.roleOptions = response.roles
this.$set(this.form, "postIds", response.postIds)
this.$set(this.form, "roleIds", response.roleIds)
this.open = true this.open = true
this.title = "修改用户" this.title = "修改"
this.form.password = ""
}) })
}, },
/** 重置密码按钮操作 */ /** 重置密码按钮操作 */
@ -490,14 +496,18 @@ export default {
submitForm: function() { submitForm: function() {
this.$refs["form"].validate(valid => { this.$refs["form"].validate(valid => {
if (valid) { if (valid) {
if (this.form.userId != undefined) { this.form.typeId = 13
updateUser(this.form).then(response => { console.log("this.form.deptId",this.form.deptId)
this.form.organId = this.form.deptId
console.log("this.form.organId",this.form.organId)
if (this.form.equId != undefined) {
updateData(this.form).then(response => {
this.$modal.msgSuccess("修改成功") this.$modal.msgSuccess("修改成功")
this.open = false this.open = false
this.getList() this.getList()
}) })
} else { } else {
addUser(this.form).then(response => { addData(this.form).then(response => {
this.$modal.msgSuccess("新增成功") this.$modal.msgSuccess("新增成功")
this.open = false this.open = false
this.getList() this.getList()
@ -508,9 +518,9 @@ export default {
}, },
/** 删除按钮操作 */ /** 删除按钮操作 */
handleDelete(row) { handleDelete(row) {
const userIds = row.userId || this.ids const userIds = row.equId || this.ids
this.$modal.confirm('是否确认删除用户编号为"' + userIds + '"的数据项?').then(function() { this.$modal.confirm('是否确认删除编号为"' + userIds + '"的数据项?').then(function() {
return delUser(userIds) return delData(userIds)
}).then(() => { }).then(() => {
this.getList() this.getList()
this.$modal.msgSuccess("删除成功") this.$modal.msgSuccess("删除成功")
@ -518,9 +528,9 @@ export default {
}, },
/** 导出按钮操作 */ /** 导出按钮操作 */
handleExport() { handleExport() {
this.download('system/user/export', { this.download('equ/info/export', {
...this.queryParams ...this.queryParams
}, `user_${new Date().getTime()}.xlsx`) }, `equInfo_${new Date().getTime()}.xlsx`)
}, },
/** 导入按钮操作 */ /** 导入按钮操作 */
handleImport() { handleImport() {
@ -529,8 +539,8 @@ export default {
}, },
/** 下载模板操作 */ /** 下载模板操作 */
importTemplate() { importTemplate() {
this.download('system/user/importTemplate', { this.download('equ/info/export', {
}, `user_template_${new Date().getTime()}.xlsx`) }, `equ_template_${new Date().getTime()}.xlsx`)
}, },
// //
handleFileUploadProgress(event, file, fileList) { handleFileUploadProgress(event, file, fileList) {

View File

@ -16,21 +16,18 @@
<!--用户数据--> <!--用户数据-->
<pane size="84"> <pane size="84">
<el-col> <el-col>
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
<el-form-item label="用户名称" prop="userName"> <el-form-item label="设备编号" prop="equCode">
<el-input v-model="queryParams.userName" placeholder="请输入用户名称" clearable style="width: 240px" @keyup.enter.native="handleQuery" /> <el-input v-model="queryParams.equCode" placeholder="请输入设备编号" clearable style="width: 240px" @keyup.enter.native="handleQuery" />
</el-form-item> </el-form-item>
<el-form-item label="手机号码" prop="phonenumber"> <el-form-item label="品牌型号" prop="modelId">
<el-input v-model="queryParams.phonenumber" placeholder="请输入手机号码" clearable style="width: 240px" @keyup.enter.native="handleQuery" /> <el-select v-model="queryParams.modelId" placeholder="请选择品牌型号">
</el-form-item> <el-option v-for="dict in dict.type.equ_model_info" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
<el-form-item label="状态" prop="status">
<el-select v-model="queryParams.status" placeholder="用户状态" clearable style="width: 240px">
<el-option v-for="dict in dict.type.sys_normal_disable" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="创建时间"> <!-- <el-form-item label="设备序列号" prop="equSn">
<el-date-picker v-model="dateRange" style="width: 240px" value-format="yyyy-MM-dd" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker> <el-input v-model="queryParams.equSn" placeholder="请输入设备序列号" clearable style="width: 240px" @keyup.enter.native="handleQuery" />
</el-form-item> </el-form-item> -->
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
@ -41,12 +38,12 @@
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['system:user:add']">新增</el-button> <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['system:user:add']">新增</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <!-- <el-col :span="1.5">
<el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate" v-hasPermi="['system:user:edit']">修改</el-button> <el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate" v-hasPermi="['system:user:edit']">修改</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete" v-hasPermi="['system:user:remove']">删除</el-button> <el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete" v-hasPermi="['system:user:remove']">删除</el-button>
</el-col> </el-col> -->
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="info" plain icon="el-icon-upload2" size="mini" @click="handleImport" v-hasPermi="['system:user:import']">导入</el-button> <el-button type="info" plain icon="el-icon-upload2" size="mini" @click="handleImport" v-hasPermi="['system:user:import']">导入</el-button>
</el-col> </el-col>
@ -57,33 +54,39 @@
</el-row> </el-row>
<el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="50" align="center" /> <!-- <el-table-column label="设备编号" align="center" key="equId" prop="equId" /> -->
<el-table-column label="用户编号" align="center" key="userId" prop="userId" v-if="columns.userId.visible" /> <el-table-column label="设备编号" align="center" key="equCode" prop="equCode" />
<el-table-column label="用户名称" align="center" key="userName" prop="userName" v-if="columns.userName.visible" :show-overflow-tooltip="true" /> <el-table-column label="所属机构" align="center" key="deptName" prop="deptName" />
<el-table-column label="用户昵称" align="center" key="nickName" prop="nickName" v-if="columns.nickName.visible" :show-overflow-tooltip="true" /> <el-table-column label="品牌型号" align="center" key="modelId" prop="modelId" />
<el-table-column label="部门" align="center" key="deptName" prop="dept.deptName" v-if="columns.deptName.visible" :show-overflow-tooltip="true" /> <el-table-column label="设备功能 " align="center" prop="equFunction"/>
<el-table-column label="手机号码" align="center" key="phonenumber" prop="phonenumber" v-if="columns.phonenumber.visible" width="120" /> <el-table-column label="设备类型" align="center" prop="equType" />
<el-table-column label="状态" align="center" key="status" v-if="columns.status.visible"> <el-table-column label="范围角度" align="center" key="rangeRad" prop="rangeRad" >
<template slot-scope="scope"> <template #default="scope">
<el-switch v-model="scope.row.status" active-value="0" inactive-value="1" @change="handleStatusChange(scope.row)"></el-switch> <dict-tag :options="dict.type.sys_range_rad" :value="scope.row.rangeRad" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="创建时间" align="center" prop="createTime" v-if="columns.createTime.visible" width="160"> <el-table-column label="特定功能" align="center" key="spacialFunction" prop="spacialFunction" >
<template slot-scope="scope"> <template #default="scope">
<span>{{ parseTime(scope.row.createTime) }}</span> <dict-tag :options="dict.type.sys_spacial_fuction" :value="scope.row.spacialFunction" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="设备状态" align="center" key="equSts" prop="equSts" >
<template #default="scope">
<dict-tag :options="dict.type.dev_health_status" :value="scope.row.equSts" />
</template>
</el-table-column>
<el-table-column label="备注" align="center" key="remark" prop="remark" />
<el-table-column label="操作" align="center" width="160" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" width="160" class-name="small-padding fixed-width">
<template slot-scope="scope" v-if="scope.row.userId !== 1"> <template slot-scope="scope" v-if="scope.row.userId !== 1">
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['system:user:edit']">修改</el-button> <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['system:user:edit']">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['system:user:remove']">删除</el-button> <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['system:user:remove']">删除</el-button>
<el-dropdown size="mini" @command="(command) => handleCommand(command, scope.row)" v-hasPermi="['system:user:resetPwd', 'system:user:edit']"> <!-- <el-dropdown size="mini" @command="(command) => handleCommand(command, scope.row)" v-hasPermi="['system:user:resetPwd', 'system:user:edit']">
<el-button size="mini" type="text" icon="el-icon-d-arrow-right">更多</el-button> <el-button size="mini" type="text" icon="el-icon-d-arrow-right">更多</el-button>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item command="handleResetPwd" icon="el-icon-key" v-hasPermi="['system:user:resetPwd']">重置密码</el-dropdown-item> <el-dropdown-item command="handleResetPwd" icon="el-icon-key" v-hasPermi="['system:user:resetPwd']">重置密码</el-dropdown-item>
<el-dropdown-item command="handleAuthRole" icon="el-icon-circle-check" v-hasPermi="['system:user:edit']">分配角色</el-dropdown-item> <el-dropdown-item command="handleAuthRole" icon="el-icon-circle-check" v-hasPermi="['system:user:edit']">分配角色</el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown> -->
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -97,74 +100,62 @@
<!-- 添加或修改用户配置对话框 --> <!-- 添加或修改用户配置对话框 -->
<el-dialog :title="title" :visible.sync="open" width="600px" append-to-body> <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="用户昵称" prop="nickName"> <el-form-item label="品牌型号">
<el-input v-model="form.nickName" placeholder="请输入用户昵称" maxlength="30" /> <el-select v-model="form.modelId" placeholder="请选择品牌型号">
</el-form-item> <el-option v-for="dict in dict.type.equ_model_info" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
</el-col> </el-select>
<el-col :span="12"> </el-form-item>
<el-form-item label="归属部门" prop="deptId"> </el-col>
<treeselect v-model="form.deptId" :options="enabledDeptOptions" :show-count="true" placeholder="请选择归属部门" /> <el-col :span="12">
</el-form-item> <el-form-item label="归属部门" prop="deptId">
</el-col> <treeselect v-model="form.deptId" :options="enabledDeptOptions" :show-count="true" placeholder="请选择归属部门" />
</el-row> </el-form-item>
<el-row> </el-col>
<el-col :span="12"> </el-row>
<el-form-item label="手机号码" prop="phonenumber"> <el-row>
<el-input v-model="form.phonenumber" placeholder="请输入手机号码" maxlength="11" /> <el-col :span="12">
</el-form-item> <el-form-item label="设备功能" prop="equFunction">
</el-col> <!-- <el-select v-model="form.equFunction" placeholder="请选择" @change="changeSelect()"> -->
<el-col :span="12"> <el-select v-model="form.equFunction" placeholder="请选择" >
<el-form-item label="邮箱" prop="email"> <el-option v-for="(item,i) in procedureType" :key="i" :label="item" :value="item" ></el-option>
<el-input v-model="form.email" placeholder="请输入邮箱" maxlength="50" /> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> <el-col :span="12">
<el-row> <el-form-item label="设备分类" prop="equType">
<el-col :span="12"> <el-select v-model="form.equType" placeholder="请选择">
<el-form-item v-if="form.userId == undefined" label="用户名称" prop="userName"> <el-option v-for="(item,i) in causeGroup" :key="i" :label="item" :value="item" ></el-option>
<el-input v-model="form.userName" placeholder="请输入用户名称" maxlength="30" /> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> </el-row>
<el-form-item v-if="form.userId == undefined" label="用户密码" prop="password"> <el-row>
<el-input v-model="form.password" placeholder="请输入用户密码" type="password" maxlength="20" show-password /> <el-col :span="12">
</el-form-item> <el-form-item label="范围角度" prop="rangeRad">
</el-col> <el-select v-model="form.rangeRad" placeholder="请选择范围角度">
</el-row> <el-option v-for="dict in dict.type.sys_range_rad" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
<el-row> </el-select>
<el-col :span="12"> </el-form-item>
<el-form-item label="用户性别"> </el-col>
<el-select v-model="form.sex" placeholder="请选择性别"> <el-col :span="12">
<el-option v-for="dict in dict.type.sys_user_sex" :key="dict.value" :label="dict.label" :value="dict.value"></el-option> <el-form-item label="特定功能" prop="spacialFunction">
</el-select> <el-select v-model="form.spacialFunction" placeholder="请选择特定功能">
</el-form-item> <el-option v-for="dict in dict.type.sys_spacial_fuction" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
</el-col> </el-select>
<el-col :span="12"> </el-form-item>
<el-form-item label="状态"> </el-col>
<el-radio-group v-model="form.status"> </el-row>
<el-radio v-for="dict in dict.type.sys_normal_disable" :key="dict.value" :label="dict.value">{{ dict.label }}</el-radio> <el-row>
</el-radio-group> <el-col :span="12">
</el-form-item> <el-form-item label="设备状态">
</el-col> <el-select v-model="form.equSts" placeholder="请选择设备状态">
</el-row> <el-option v-for="dict in dict.type.dev_health_status" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
<el-row> </el-select>
<el-col :span="12"> </el-form-item>
<el-form-item label="岗位"> </el-col>
<el-select v-model="form.postIds" multiple placeholder="请选择岗位"> </el-row>
<el-option v-for="item in postOptions" :key="item.postId" :label="item.postName" :value="item.postId" :disabled="item.status == 1" ></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="角色">
<el-select v-model="form.roleIds" multiple placeholder="请选择角色">
<el-option v-for="item in roleOptions" :key="item.roleId" :label="item.roleName" :value="item.roleId" :disabled="item.status == 1"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="备注"> <el-form-item label="备注">
@ -202,6 +193,7 @@
<script> <script>
import { listUser, getUser, delUser, addUser, updateUser, resetUserPwd, changeUserStatus, deptTreeSelect } from "@/api/system/user" import { listUser, getUser, delUser, addUser, updateUser, resetUserPwd, changeUserStatus, deptTreeSelect } from "@/api/system/user"
import { listData, getData, delData, addData, updateData } from "@/api/system/equInfoapi"
import { getToken } from "@/utils/auth" import { getToken } from "@/utils/auth"
import Treeselect from "@riophae/vue-treeselect" import Treeselect from "@riophae/vue-treeselect"
import "@riophae/vue-treeselect/dist/vue-treeselect.css" import "@riophae/vue-treeselect/dist/vue-treeselect.css"
@ -210,7 +202,7 @@ import "splitpanes/dist/splitpanes.css"
export default { export default {
name: "User", name: "User",
dicts: ['sys_normal_disable', 'sys_user_sex'], dicts: ['sys_normal_disable', 'sys_user_sex','dev_equ_classify','dev_health_status', 'equ_attribution_sts','equ_model_info','sys_range_rad','sys_spacial_fuction'],
components: { Treeselect, Splitpanes, Pane }, components: { Treeselect, Splitpanes, Pane },
data() { data() {
return { return {
@ -248,6 +240,13 @@ export default {
roleOptions: [], roleOptions: [],
// //
form: {}, form: {},
procedureType: ["发现类", "反制类", "车载类"],
TypeObj:{
发现类: ["雷达探测设备", "频谱探测设备", "光电侦测设备","便携式侦测设备", "侦反一体设备"],
反制类: ["全向电磁压制设备", "定向电磁压制设备", "便携式反制设备","导航诱骗设备", "物理打击设备", "激光毁伤设备", "侦反一体设备"],
车载类: ["无人机侦测反制车"],
},
causeGroup:["雷达探测设备", "频谱探测设备", "光电侦测设备","便携式侦测设备", "侦反一体设备","全向电磁压制设备", "定向电磁压制设备", "便携式反制设备","导航诱骗设备", "物理打击设备", "激光毁伤设备", "侦反一体设备","无人机侦测反制车"],
defaultProps: { defaultProps: {
children: "children", children: "children",
label: "label" label: "label"
@ -265,16 +264,14 @@ export default {
// //
headers: { Authorization: "Bearer " + getToken() }, headers: { Authorization: "Bearer " + getToken() },
// //
url: process.env.VUE_APP_BASE_API + "/system/user/importData" url: process.env.VUE_APP_BASE_API + "/equ/info/importData"
}, },
// //
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
userName: undefined, equCode: '',
phonenumber: undefined, equSn: '',
status: undefined,
deptId: undefined
}, },
// //
columns: { columns: {
@ -288,32 +285,41 @@ export default {
}, },
// //
rules: { rules: {
userName: [ // userName: [
{ required: true, message: "用户名称不能为空", trigger: "blur" }, // { required: true, message: "", trigger: "blur" },
{ min: 2, max: 20, message: '用户名称长度必须介于 2 和 20 之间', trigger: 'blur' } // { min: 2, max: 20, message: ' 2 20 ', trigger: 'blur' }
// ],
modelId: [
{ required: true, message: "品牌型号不能为空", trigger: "blur" }
], ],
nickName: [ equSts: [
{ required: true, message: "用户昵称不能为空", trigger: "blur" } { required: true, message: "状态不能为空", trigger: "blur" }
], ],
password: [ equSn: [
{ required: true, message: "用户密码不能为空", trigger: "blur" }, { required: true, message: "序列号不能为空", trigger: "blur" }
{ min: 5, max: 20, message: '用户密码长度必须介于 5 和 20 之间', trigger: 'blur' },
{ pattern: /^[^<>"'|\\]+$/, message: "不能包含非法字符:< > \" ' \\\ |", trigger: "blur" }
], ],
email: [ deptId: [
{ { required: true, message: "部门不能为空", trigger: "blur" }
type: "email",
message: "请输入正确的邮箱地址",
trigger: ["blur", "change"]
}
], ],
phonenumber: [ // password: [
{ // { required: true, message: "", trigger: "blur" },
pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, // { min: 5, max: 20, message: ' 5 20 ', trigger: 'blur' },
message: "请输入正确的手机号码", // { pattern: /^[^<>"'|\\]+$/, message: "< > \" ' \\\ |", trigger: "blur" }
trigger: "blur" // ],
} // email: [
] // {
// type: "email",
// message: "",
// trigger: ["blur", "change"]
// }
// ],
// phonenumber: [
// {
// pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
// message: "",
// trigger: "blur"
// }
// ]
} }
} }
}, },
@ -331,10 +337,21 @@ export default {
}) })
}, },
methods: { methods: {
changeSelect() {
console.log("进入了联动子级滞空")
//
form.equType = "";
//
for (const k in procedureType) {
this.causeGroup = this.TypeObj[form.equFunction];
}
},
/** 查询用户列表 */ /** 查询用户列表 */
getList() { getList() {
this.loading = true this.loading = true
listUser(this.addDateRange(this.queryParams, this.dateRange)).then(response => { this.queryParams.typeId = 11
listData(this.queryParams).then(response => {
this.userList = response.rows this.userList = response.rows
this.total = response.total this.total = response.total
this.loading = false this.loading = false
@ -389,18 +406,20 @@ export default {
// //
reset() { reset() {
this.form = { this.form = {
userId: undefined, // userId: undefined,
deptId: undefined, // deptId: undefined,
userName: undefined, // userName: undefined,
nickName: undefined, // nickName: undefined,
password: undefined, // password: undefined,
phonenumber: undefined, // phonenumber: undefined,
email: undefined, // email: undefined,
sex: undefined, // sex: undefined,
status: "0", // status: "0",
remark: undefined, // remark: undefined,
postIds: [], // postIds: [],
roleIds: [] // typeId: 10
equCode: '',
equSn: '',
} }
this.resetForm("form") this.resetForm("form")
}, },
@ -439,27 +458,18 @@ export default {
/** 新增按钮操作 */ /** 新增按钮操作 */
handleAdd() { handleAdd() {
this.reset() this.reset()
getUser().then(response => { this.open = true
this.postOptions = response.posts this.title = "添加"
this.roleOptions = response.roles this.form.typeId =11
this.open = true
this.title = "添加用户"
this.form.password = this.initPassword
})
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
handleUpdate(row) { handleUpdate(row) {
this.reset() this.reset()
const userId = row.userId || this.ids const userId = row.equId || this.ids
getUser(userId).then(response => { getData(userId).then(response => {
this.form = response.data this.form = response.data
this.postOptions = response.posts
this.roleOptions = response.roles
this.$set(this.form, "postIds", response.postIds)
this.$set(this.form, "roleIds", response.roleIds)
this.open = true this.open = true
this.title = "修改用户" this.title = "修改"
this.form.password = ""
}) })
}, },
/** 重置密码按钮操作 */ /** 重置密码按钮操作 */
@ -490,14 +500,18 @@ export default {
submitForm: function() { submitForm: function() {
this.$refs["form"].validate(valid => { this.$refs["form"].validate(valid => {
if (valid) { if (valid) {
if (this.form.userId != undefined) { this.form.typeId = 11
updateUser(this.form).then(response => { console.log("this.form.deptId",this.form.deptId)
this.form.organId = this.form.deptId
console.log("this.form.organId",this.form.organId)
if (this.form.equId != undefined) {
updateData(this.form).then(response => {
this.$modal.msgSuccess("修改成功") this.$modal.msgSuccess("修改成功")
this.open = false this.open = false
this.getList() this.getList()
}) })
} else { } else {
addUser(this.form).then(response => { addData(this.form).then(response => {
this.$modal.msgSuccess("新增成功") this.$modal.msgSuccess("新增成功")
this.open = false this.open = false
this.getList() this.getList()
@ -508,9 +522,9 @@ export default {
}, },
/** 删除按钮操作 */ /** 删除按钮操作 */
handleDelete(row) { handleDelete(row) {
const userIds = row.userId || this.ids const userIds = row.equId || this.ids
this.$modal.confirm('是否确认删除用户编号为"' + userIds + '"的数据项?').then(function() { this.$modal.confirm('是否确认删除编号为"' + userIds + '"的数据项?').then(function() {
return delUser(userIds) return delData(userIds)
}).then(() => { }).then(() => {
this.getList() this.getList()
this.$modal.msgSuccess("删除成功") this.$modal.msgSuccess("删除成功")
@ -518,9 +532,9 @@ export default {
}, },
/** 导出按钮操作 */ /** 导出按钮操作 */
handleExport() { handleExport() {
this.download('system/user/export', { this.download('equ/info/export', {
...this.queryParams ...this.queryParams
}, `user_${new Date().getTime()}.xlsx`) }, `equInfo_${new Date().getTime()}.xlsx`)
}, },
/** 导入按钮操作 */ /** 导入按钮操作 */
handleImport() { handleImport() {
@ -529,8 +543,8 @@ export default {
}, },
/** 下载模板操作 */ /** 下载模板操作 */
importTemplate() { importTemplate() {
this.download('system/user/importTemplate', { this.download('equ/info/export', {
}, `user_template_${new Date().getTime()}.xlsx`) }, `equ_template_${new Date().getTime()}.xlsx`)
}, },
// //
handleFileUploadProgress(event, file, fileList) { handleFileUploadProgress(event, file, fileList) {

View File

@ -16,20 +16,12 @@
<!--用户数据--> <!--用户数据-->
<pane size="84"> <pane size="84">
<el-col> <el-col>
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">
<el-form-item label="用户名称" prop="userName"> <el-form-item label="设备编号" prop="equCode">
<el-input v-model="queryParams.userName" placeholder="请输入用户名称" clearable style="width: 240px" @keyup.enter.native="handleQuery" /> <el-input v-model="queryParams.equCode" placeholder="请输入设备编号" clearable style="width: 240px" @keyup.enter.native="handleQuery" />
</el-form-item> </el-form-item>
<el-form-item label="手机号码" prop="phonenumber"> <el-form-item label="设备序列号" prop="equSn">
<el-input v-model="queryParams.phonenumber" placeholder="请输入手机号码" clearable style="width: 240px" @keyup.enter.native="handleQuery" /> <el-input v-model="queryParams.equSn" placeholder="请输入设备序列号" clearable style="width: 240px" @keyup.enter.native="handleQuery" />
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select v-model="queryParams.status" placeholder="用户状态" clearable style="width: 240px">
<el-option v-for="dict in dict.type.sys_normal_disable" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="创建时间">
<el-date-picker v-model="dateRange" style="width: 240px" value-format="yyyy-MM-dd" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
@ -41,12 +33,12 @@
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['system:user:add']">新增</el-button> <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" v-hasPermi="['system:user:add']">新增</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <!-- <el-col :span="1.5">
<el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate" v-hasPermi="['system:user:edit']">修改</el-button> <el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate" v-hasPermi="['system:user:edit']">修改</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete" v-hasPermi="['system:user:remove']">删除</el-button> <el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete" v-hasPermi="['system:user:remove']">删除</el-button>
</el-col> </el-col> -->
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="info" plain icon="el-icon-upload2" size="mini" @click="handleImport" v-hasPermi="['system:user:import']">导入</el-button> <el-button type="info" plain icon="el-icon-upload2" size="mini" @click="handleImport" v-hasPermi="['system:user:import']">导入</el-button>
</el-col> </el-col>
@ -57,33 +49,53 @@
</el-row> </el-row>
<el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="50" align="center" /> <!-- <el-table-column label="设备编号" align="center" key="equId" prop="equId" /> -->
<el-table-column label="用户编号" align="center" key="userId" prop="userId" v-if="columns.userId.visible" /> <el-table-column label="设备编号" align="center" key="equCode" prop="equCode" />
<el-table-column label="用户名称" align="center" key="userName" prop="userName" v-if="columns.userName.visible" :show-overflow-tooltip="true" /> <el-table-column label="部门" align="center" key="deptName" prop="deptName" />
<el-table-column label="用户昵称" align="center" key="nickName" prop="nickName" v-if="columns.nickName.visible" :show-overflow-tooltip="true" /> <el-table-column label="品牌型号" align="center" key="modelId" prop="modelId" />
<el-table-column label="部门" align="center" key="deptName" prop="dept.deptName" v-if="columns.deptName.visible" :show-overflow-tooltip="true" /> <!-- <el-table-column label="设备分类" align="center" key="classify" prop="classify" >
<el-table-column label="手机号码" align="center" key="phonenumber" prop="phonenumber" v-if="columns.phonenumber.visible" width="120" /> <template #default="scope">
<el-table-column label="状态" align="center" key="status" v-if="columns.status.visible"> <dict-tag :options="dict.type.dev_equ_classify" :value="scope.row.classify" />
<template slot-scope="scope"> </template>
<el-switch v-model="scope.row.status" active-value="0" inactive-value="1" @change="handleStatusChange(scope.row)"></el-switch> </el-table-column> -->
</template> <el-table-column label="设备序列号" align="center" key="equSn" prop="equSn" />
</el-table-column> <el-table-column label="责任人" align="center" key="mngName" prop="mngName" />
<el-table-column label="创建时间" align="center" prop="createTime" v-if="columns.createTime.visible" width="160"> <el-table-column label="责任人警号" align="center" key="mngCode" prop="mngCode" />
<template slot-scope="scope"> <el-table-column label="设备状态" align="center" key="equSts" prop="equSts" >
<span>{{ parseTime(scope.row.createTime) }}</span> <template #default="scope">
</template> <dict-tag :options="dict.type.dev_health_status" :value="scope.row.equSts" />
</template>
</el-table-column> </el-table-column>
<el-table-column label="保险状态" align="center" key="insuranceSts" prop="insuranceSts" />
<el-table-column label="保险期限" align="center" key="mtnDate" prop="mtnDate"/>
<el-table-column label="备注" align="center" key="remark" prop="remark" />
<!-- <el-table-column prop="equCode" label="设备编号" header-align="center" align="center">
<template #default="{ row }">
<span @click="downloadText(row.equCode)"
style="cursor: pointer; color: blue;">{{ row.equCode }}</span>
</template>
</el-table-column>
<el-table-column label="二维码" align="center" width="150">
<template #default="{ row }">
<div class="qrcode-container" @click="downloadQRCode(row)"
@dblclick="zoomQRCode(row)">
<img :src="row.qrCode" alt="QR Code" class="qrcode-image" />
</div>
</template>
</el-table-column> -->
<el-table-column label="操作" align="center" width="160" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" width="160" class-name="small-padding fixed-width">
<template slot-scope="scope" v-if="scope.row.userId !== 1"> <template slot-scope="scope" v-if="scope.row.userId !== 1">
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['system:user:edit']">修改</el-button> <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['system:user:edit']">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['system:user:remove']">删除</el-button> <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" v-hasPermi="['system:user:remove']">删除</el-button>
<el-dropdown size="mini" @command="(command) => handleCommand(command, scope.row)" v-hasPermi="['system:user:resetPwd', 'system:user:edit']"> <!-- <el-dropdown size="mini" @command="(command) => handleCommand(command, scope.row)" v-hasPermi="['system:user:resetPwd', 'system:user:edit']">
<el-button size="mini" type="text" icon="el-icon-d-arrow-right">更多</el-button> <el-button size="mini" type="text" icon="el-icon-d-arrow-right">更多</el-button>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item command="handleResetPwd" icon="el-icon-key" v-hasPermi="['system:user:resetPwd']">重置密码</el-dropdown-item> <el-dropdown-item command="handleResetPwd" icon="el-icon-key" v-hasPermi="['system:user:resetPwd']">重置密码</el-dropdown-item>
<el-dropdown-item command="handleAuthRole" icon="el-icon-circle-check" v-hasPermi="['system:user:edit']">分配角色</el-dropdown-item> <el-dropdown-item command="handleAuthRole" icon="el-icon-circle-check" v-hasPermi="['system:user:edit']">分配角色</el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown> -->
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -97,74 +109,60 @@
<!-- 添加或修改用户配置对话框 --> <!-- 添加或修改用户配置对话框 -->
<el-dialog :title="title" :visible.sync="open" width="600px" append-to-body> <el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="用户昵称" prop="nickName"> <el-form-item label="品牌型号">
<el-input v-model="form.nickName" placeholder="请输入用户昵称" maxlength="30" /> <el-select v-model="form.modelId" placeholder="请选择品牌型号">
</el-form-item> <el-option v-for="dict in dict.type.equ_model_info" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
</el-col> </el-select>
<el-col :span="12"> </el-form-item>
<el-form-item label="归属部门" prop="deptId"> </el-col>
<treeselect v-model="form.deptId" :options="enabledDeptOptions" :show-count="true" placeholder="请选择归属部门" /> <el-col :span="12">
</el-form-item> <el-form-item label="设备状态">
</el-col> <el-select v-model="form.equSts" placeholder="请选择设备状态">
</el-row> <el-option v-for="dict in dict.type.dev_health_status" :key="dict.value" :label="dict.label" :value="dict.value"></el-option>
<el-row> </el-select>
<el-col :span="12"> </el-form-item>
<el-form-item label="手机号码" prop="phonenumber"> </el-col>
<el-input v-model="form.phonenumber" placeholder="请输入手机号码" maxlength="11" /> </el-row>
</el-form-item> <el-row>
</el-col> <el-col :span="12">
<el-col :span="12"> <el-form-item label="归属部门" prop="deptId">
<el-form-item label="邮箱" prop="email"> <treeselect v-model="form.deptId" :options="enabledDeptOptions" :show-count="true" placeholder="请选择归属部门" />
<el-input v-model="form.email" placeholder="请输入邮箱" maxlength="50" /> </el-form-item>
</el-form-item> </el-col>
</el-col> <el-col :span="12">
</el-row> <el-form-item label="序列号" prop="equSn">
<el-row> <el-input v-model="form.equSn" placeholder="请输入设备序列号" maxlength="30" />
<el-col :span="12"> </el-form-item>
<el-form-item v-if="form.userId == undefined" label="用户名称" prop="userName"> </el-col>
<el-input v-model="form.userName" placeholder="请输入用户名称" maxlength="30" /> </el-row>
</el-form-item> <el-row>
</el-col> <el-col :span="12">
<el-col :span="12"> <el-form-item label="责任人" prop="mngName">
<el-form-item v-if="form.userId == undefined" label="用户密码" prop="password"> <el-input v-model="form.mngName" placeholder="请输入责任人" maxlength="30" />
<el-input v-model="form.password" placeholder="请输入用户密码" type="password" maxlength="20" show-password /> </el-form-item>
</el-form-item> </el-col>
</el-col> <el-col :span="12">
</el-row> <el-form-item label="责任警号" prop="mngCode">
<el-row> <el-input v-model="form.mngCode" placeholder="请输入责任警号" maxlength="30" />
<el-col :span="12"> </el-form-item>
<el-form-item label="用户性别"> </el-col>
<el-select v-model="form.sex" placeholder="请选择性别"> </el-row>
<el-option v-for="dict in dict.type.sys_user_sex" :key="dict.value" :label="dict.label" :value="dict.value"></el-option> <el-row>
</el-select> <el-col :span="12">
</el-form-item> <el-form-item label="采购日期" prop="purDate">
</el-col> <el-date-picker clearable v-model="form.purDate" type="date" value-format="yyyy-MM-dd" placeholder="采购日期"></el-date-picker>
<el-col :span="12"> </el-form-item>
<el-form-item label="状态"> </el-col>
<el-radio-group v-model="form.status"> </el-row>
<el-radio v-for="dict in dict.type.sys_normal_disable" :key="dict.value" :label="dict.value">{{ dict.label }}</el-radio> <el-row>
</el-radio-group> <el-col :span="12">
</el-form-item> <el-form-item label="保险期限" prop="mtnDate">
</el-col> <el-date-picker clearable v-model="form.mtnDate" type="date" value-format="yyyy-MM-dd" placeholder="保险期限"></el-date-picker>
</el-row> </el-form-item>
<el-row> </el-col>
<el-col :span="12"> </el-row>
<el-form-item label="岗位">
<el-select v-model="form.postIds" multiple placeholder="请选择岗位">
<el-option v-for="item in postOptions" :key="item.postId" :label="item.postName" :value="item.postId" :disabled="item.status == 1" ></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="角色">
<el-select v-model="form.roleIds" multiple placeholder="请选择角色">
<el-option v-for="item in roleOptions" :key="item.roleId" :label="item.roleName" :value="item.roleId" :disabled="item.status == 1"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="备注"> <el-form-item label="备注">
@ -202,6 +200,7 @@
<script> <script>
import { listUser, getUser, delUser, addUser, updateUser, resetUserPwd, changeUserStatus, deptTreeSelect } from "@/api/system/user" import { listUser, getUser, delUser, addUser, updateUser, resetUserPwd, changeUserStatus, deptTreeSelect } from "@/api/system/user"
import { listData, getData, delData, addData, updateData } from "@/api/system/equInfoapi"
import { getToken } from "@/utils/auth" import { getToken } from "@/utils/auth"
import Treeselect from "@riophae/vue-treeselect" import Treeselect from "@riophae/vue-treeselect"
import "@riophae/vue-treeselect/dist/vue-treeselect.css" import "@riophae/vue-treeselect/dist/vue-treeselect.css"
@ -210,7 +209,7 @@ import "splitpanes/dist/splitpanes.css"
export default { export default {
name: "User", name: "User",
dicts: ['sys_normal_disable', 'sys_user_sex'], dicts: ['sys_normal_disable', 'sys_user_sex','dev_equ_classify','dev_health_status', 'equ_attribution_sts','equ_model_info'],
components: { Treeselect, Splitpanes, Pane }, components: { Treeselect, Splitpanes, Pane },
data() { data() {
return { return {
@ -265,16 +264,14 @@ export default {
// //
headers: { Authorization: "Bearer " + getToken() }, headers: { Authorization: "Bearer " + getToken() },
// //
url: process.env.VUE_APP_BASE_API + "/system/user/importData" url: process.env.VUE_APP_BASE_API + "/equ/info/importData"
}, },
// //
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
userName: undefined, equCode: '',
phonenumber: undefined, equSn: '',
status: undefined,
deptId: undefined
}, },
// //
columns: { columns: {
@ -288,32 +285,41 @@ export default {
}, },
// //
rules: { rules: {
userName: [ // userName: [
{ required: true, message: "用户名称不能为空", trigger: "blur" }, // { required: true, message: "", trigger: "blur" },
{ min: 2, max: 20, message: '用户名称长度必须介于 2 和 20 之间', trigger: 'blur' } // { min: 2, max: 20, message: ' 2 20 ', trigger: 'blur' }
// ],
modelId: [
{ required: true, message: "品牌型号不能为空", trigger: "blur" }
], ],
nickName: [ equSts: [
{ required: true, message: "用户昵称不能为空", trigger: "blur" } { required: true, message: "状态不能为空", trigger: "blur" }
], ],
password: [ equSn: [
{ required: true, message: "用户密码不能为空", trigger: "blur" }, { required: true, message: "序列号不能为空", trigger: "blur" }
{ min: 5, max: 20, message: '用户密码长度必须介于 5 和 20 之间', trigger: 'blur' },
{ pattern: /^[^<>"'|\\]+$/, message: "不能包含非法字符:< > \" ' \\\ |", trigger: "blur" }
], ],
email: [ deptId: [
{ { required: true, message: "部门不能为空", trigger: "blur" }
type: "email",
message: "请输入正确的邮箱地址",
trigger: ["blur", "change"]
}
], ],
phonenumber: [ // password: [
{ // { required: true, message: "", trigger: "blur" },
pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, // { min: 5, max: 20, message: ' 5 20 ', trigger: 'blur' },
message: "请输入正确的手机号码", // { pattern: /^[^<>"'|\\]+$/, message: "< > \" ' \\\ |", trigger: "blur" }
trigger: "blur" // ],
} // email: [
] // {
// type: "email",
// message: "",
// trigger: ["blur", "change"]
// }
// ],
// phonenumber: [
// {
// pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
// message: "",
// trigger: "blur"
// }
// ]
} }
} }
}, },
@ -334,7 +340,8 @@ export default {
/** 查询用户列表 */ /** 查询用户列表 */
getList() { getList() {
this.loading = true this.loading = true
listUser(this.addDateRange(this.queryParams, this.dateRange)).then(response => { this.queryParams.typeId = 12
listData(this.queryParams).then(response => {
this.userList = response.rows this.userList = response.rows
this.total = response.total this.total = response.total
this.loading = false this.loading = false
@ -389,18 +396,20 @@ export default {
// //
reset() { reset() {
this.form = { this.form = {
userId: undefined, // userId: undefined,
deptId: undefined, // deptId: undefined,
userName: undefined, // userName: undefined,
nickName: undefined, // nickName: undefined,
password: undefined, // password: undefined,
phonenumber: undefined, // phonenumber: undefined,
email: undefined, // email: undefined,
sex: undefined, // sex: undefined,
status: "0", // status: "0",
remark: undefined, // remark: undefined,
postIds: [], // postIds: [],
roleIds: [] // typeId: 10
equCode: '',
equSn: '',
} }
this.resetForm("form") this.resetForm("form")
}, },
@ -439,27 +448,18 @@ export default {
/** 新增按钮操作 */ /** 新增按钮操作 */
handleAdd() { handleAdd() {
this.reset() this.reset()
getUser().then(response => { this.open = true
this.postOptions = response.posts this.title = "添加"
this.roleOptions = response.roles this.form.typeId =12
this.open = true
this.title = "添加用户"
this.form.password = this.initPassword
})
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
handleUpdate(row) { handleUpdate(row) {
this.reset() this.reset()
const userId = row.userId || this.ids const userId = row.equId || this.ids
getUser(userId).then(response => { getData(userId).then(response => {
this.form = response.data this.form = response.data
this.postOptions = response.posts
this.roleOptions = response.roles
this.$set(this.form, "postIds", response.postIds)
this.$set(this.form, "roleIds", response.roleIds)
this.open = true this.open = true
this.title = "修改用户" this.title = "修改"
this.form.password = ""
}) })
}, },
/** 重置密码按钮操作 */ /** 重置密码按钮操作 */
@ -490,14 +490,18 @@ export default {
submitForm: function() { submitForm: function() {
this.$refs["form"].validate(valid => { this.$refs["form"].validate(valid => {
if (valid) { if (valid) {
if (this.form.userId != undefined) { this.form.typeId = 12
updateUser(this.form).then(response => { console.log("this.form.deptId",this.form.deptId)
this.form.organId = this.form.deptId
console.log("this.form.organId",this.form.organId)
if (this.form.equId != undefined) {
updateData(this.form).then(response => {
this.$modal.msgSuccess("修改成功") this.$modal.msgSuccess("修改成功")
this.open = false this.open = false
this.getList() this.getList()
}) })
} else { } else {
addUser(this.form).then(response => { addData(this.form).then(response => {
this.$modal.msgSuccess("新增成功") this.$modal.msgSuccess("新增成功")
this.open = false this.open = false
this.getList() this.getList()
@ -508,9 +512,9 @@ export default {
}, },
/** 删除按钮操作 */ /** 删除按钮操作 */
handleDelete(row) { handleDelete(row) {
const userIds = row.userId || this.ids const userIds = row.equId || this.ids
this.$modal.confirm('是否确认删除用户编号为"' + userIds + '"的数据项?').then(function() { this.$modal.confirm('是否确认删除编号为"' + userIds + '"的数据项?').then(function() {
return delUser(userIds) return delData(userIds)
}).then(() => { }).then(() => {
this.getList() this.getList()
this.$modal.msgSuccess("删除成功") this.$modal.msgSuccess("删除成功")
@ -518,9 +522,9 @@ export default {
}, },
/** 导出按钮操作 */ /** 导出按钮操作 */
handleExport() { handleExport() {
this.download('system/user/export', { this.download('equ/info/export', {
...this.queryParams ...this.queryParams
}, `user_${new Date().getTime()}.xlsx`) }, `equInfo_${new Date().getTime()}.xlsx`)
}, },
/** 导入按钮操作 */ /** 导入按钮操作 */
handleImport() { handleImport() {
@ -529,8 +533,8 @@ export default {
}, },
/** 下载模板操作 */ /** 下载模板操作 */
importTemplate() { importTemplate() {
this.download('system/user/importTemplate', { this.download('equ/info/export', {
}, `user_template_${new Date().getTime()}.xlsx`) }, `equ_template_${new Date().getTime()}.xlsx`)
}, },
// //
handleFileUploadProgress(event, file, fileList) { handleFileUploadProgress(event, file, fileList) {