This commit is contained in:
BianLzhaoMin 2025-10-21 14:17:38 +08:00
parent c5456955c9
commit 99e44cd7e7
25 changed files with 253 additions and 108 deletions

View File

@ -43,7 +43,7 @@ const service = axios.create({
// axios中请求配置有baseURL选项表示请求URL公共部分 // axios中请求配置有baseURL选项表示请求URL公共部分
baseURL: process.env.VUE_APP_BASE_API, baseURL: process.env.VUE_APP_BASE_API,
// 超时 // 超时
timeout: 10000, timeout: 30000,
}) })
// request 拦截器 // request 拦截器

View File

@ -202,7 +202,7 @@ import {
getAllProjectListAPI, getAllProjectListAPI,
} from '@/api/basic-manage/project-manage/all-project' } from '@/api/basic-manage/project-manage/all-project'
export default { export default {
name: 'AllProject', name: 'All-project',
dicts: ['voltage_level', 'project_type', 'project_status'], dicts: ['voltage_level', 'project_type', 'project_status'],
components: { components: {
TableModel, TableModel,

View File

@ -221,7 +221,7 @@ import {
} from '@/api/basic-manage/project-manage/dept-project' } from '@/api/basic-manage/project-manage/dept-project'
import { getSubCompanySelectListCommonFun } from '@/utils/getCommonData' import { getSubCompanySelectListCommonFun } from '@/utils/getCommonData'
export default { export default {
name: 'DeptProject', name: 'Dept-project',
dicts: ['project_type', 'project_status'], // dicts: ['project_type', 'project_status'], //
components: { components: {
TableModel, TableModel,

View File

@ -125,7 +125,7 @@ import {
getLotProjectSelectListCommonFun, getLotProjectSelectListCommonFun,
} from '@/utils/getCommonData' } from '@/utils/getCommonData'
export default { export default {
name: 'LotProject', name: 'Lot-project',
dicts: ['project_type', 'project_status'], dicts: ['project_type', 'project_status'],
components: { components: {
TableModel, TableModel,

View File

@ -111,7 +111,7 @@ import {
getSubBaseInfoListAPI, getSubBaseInfoListAPI,
} from '@/api/basic-manage/sub-manage/sub-base-info' } from '@/api/basic-manage/sub-manage/sub-base-info'
export default { export default {
name: 'SubBaseInfo', name: 'Sub-base-info',
components: { components: {
TableModel, TableModel,
DialogModel, DialogModel,

View File

@ -169,7 +169,7 @@ import {
} from '@/api/basic-manage/sub-manage/sub-entry-and-exit' } from '@/api/basic-manage/sub-manage/sub-entry-and-exit'
import { getLotProjectSelectListCommonFun } from '@/utils/getCommonData' import { getLotProjectSelectListCommonFun } from '@/utils/getCommonData'
export default { export default {
name: 'SubEntryAndExit', name: 'Sub-entry-and-exit',
components: { components: {
ExitForm, ExitForm,
EntryForm, EntryForm,

View File

@ -93,7 +93,7 @@ import {
getTeamBaseInfoListAPI, getTeamBaseInfoListAPI,
} from '@/api/basic-manage/team-manage/team-base-info' } from '@/api/basic-manage/team-manage/team-base-info'
export default { export default {
name: 'TeamBaseInfo', name: 'Team-base-info',
components: { components: {
TableModel, TableModel,
DialogModel, DialogModel,

View File

@ -108,7 +108,7 @@ import { formLabel, columnsList, dialogConfig } from './config'
import { getTeamEntryListAPI } from '@/api/basic-manage/team-manage/team-entry-and-exit' import { getTeamEntryListAPI } from '@/api/basic-manage/team-manage/team-entry-and-exit'
export default { export default {
name: 'TeamEntryAndExit', name: 'Team-entry-and-exit',
components: { components: {
TableModel, TableModel,
DialogModel, DialogModel,

View File

@ -41,7 +41,7 @@ import { formLabel, columnsList, dialogConfig } from './config'
import { getAttendanceCountListAPI } from '@/api/construction-person/attendance-manage/attendance-count' import { getAttendanceCountListAPI } from '@/api/construction-person/attendance-manage/attendance-count'
export default { export default {
name: 'AttendanceCount', name: 'Attendance-count',
components: { components: {
TableModel, TableModel,
DialogModel, DialogModel,

View File

@ -155,7 +155,7 @@ import {
getAttendanceMachineListAPI, getAttendanceMachineListAPI,
} from '@/api/construction-person/attendance-manage/attendance-machine' } from '@/api/construction-person/attendance-manage/attendance-machine'
export default { export default {
name: 'SubBaseInfo', name: 'Attendance-machine',
components: { components: {
TableModel, TableModel,
DialogModel, DialogModel,

View File

@ -171,7 +171,7 @@ import {
import { getLotProjectSelectListCommonFun } from '@/utils/getCommonData' import { getLotProjectSelectListCommonFun } from '@/utils/getCommonData'
import debounce from 'lodash/debounce' import debounce from 'lodash/debounce'
export default { export default {
name: 'CardReplacementApply', name: 'Card-replacement-apply',
components: { components: {
TableModel, TableModel,
DialogModel, DialogModel,

View File

@ -143,7 +143,7 @@ import {
import { getLotProjectSelectListCommonFun } from '@/utils/getCommonData' import { getLotProjectSelectListCommonFun } from '@/utils/getCommonData'
export default { export default {
name: 'CardReplacementAudit', name: 'Card-replacement-audit',
components: { components: {
TableModel, TableModel,
DialogModel, DialogModel,

View File

@ -54,7 +54,7 @@ import { formLabel, columnsList, dialogConfig } from './config'
import { getCardReplacementCountListAPI } from '@/api/construction-person/attendance-manage/card-replacement-count' import { getCardReplacementCountListAPI } from '@/api/construction-person/attendance-manage/card-replacement-count'
import { getLotProjectSelectListCommonFun } from '@/utils/getCommonData' import { getLotProjectSelectListCommonFun } from '@/utils/getCommonData'
export default { export default {
name: 'CardReplacementCount', name: 'Card-replacement-count',
components: { components: {
TableModel, TableModel,
DialogModel, DialogModel,

View File

@ -189,7 +189,7 @@ import {
import debounce from 'lodash/debounce' import debounce from 'lodash/debounce'
export default { export default {
name: 'PersonEntry', name: 'Person-entry',
components: { components: {
TableModel, TableModel,
DialogModel, DialogModel,

View File

@ -170,7 +170,7 @@ import {
batchExitPersonAPI, batchExitPersonAPI,
} from '@/api/construction-person/entry-and-exit-manage/person-exit' } from '@/api/construction-person/entry-and-exit-manage/person-exit'
export default { export default {
name: 'PersonExit', name: 'Person-exit',
dicts: ['project_type'], dicts: ['project_type'],
components: { components: {
TableModel, TableModel,

View File

@ -136,7 +136,7 @@ import {
import debounce from 'lodash/debounce' import debounce from 'lodash/debounce'
export default { export default {
name: 'ContractWitness', name: 'Contract-witness',
components: { components: {
TableModel, TableModel,
DialogModel, DialogModel,

View File

@ -374,7 +374,7 @@ import {
} from '@/api/construction-person/red-green-light-mange/dishonesty-person' } from '@/api/construction-person/red-green-light-mange/dishonesty-person'
export default { export default {
name: 'DishonestyPerson', name: 'Dishonesty-person',
components: { components: {
TableModel, TableModel,
DialogModel, DialogModel,

View File

@ -52,7 +52,7 @@ import DialogModel from '@/components/DialogModel'
import ProjectList from './project-list.vue' import ProjectList from './project-list.vue'
import { getRedAndGreenCountListAPI } from '@/api/construction-person/red-green-light-mange/red-and-green-count' import { getRedAndGreenCountListAPI } from '@/api/construction-person/red-green-light-mange/red-and-green-count'
export default { export default {
name: 'RedAndGreenCount', name: 'Red-and-green-count',
components: { components: {
DialogModel, DialogModel,
ProjectList, ProjectList,

View File

@ -114,7 +114,7 @@ import {
} from '@/api/construction-person/red-green-light-mange/wage-card-witness' } from '@/api/construction-person/red-green-light-mange/wage-card-witness'
import debounce from 'lodash/debounce' import debounce from 'lodash/debounce'
export default { export default {
name: 'WageCardWitness', name: 'Wage-card-witness',
components: { components: {
TableModel, TableModel,
DialogModel, DialogModel,

View File

@ -40,7 +40,7 @@ import TableModel from '@/components/TableModel'
import { formLabel, columnsList } from './config' import { formLabel, columnsList } from './config'
import { getPersonCountListAPI } from '@/api/synthesize-query/person-count' import { getPersonCountListAPI } from '@/api/synthesize-query/person-count'
export default { export default {
name: 'PersonCount', name: 'Person-count',
components: { components: {
TableModel, TableModel,
}, },

View File

@ -52,7 +52,7 @@ import TableModel from '@/components/TableModel'
import { formLabel, columnsList } from './config' import { formLabel, columnsList } from './config'
import { getProjectCountListAPI } from '@/api/synthesize-query/project-count' import { getProjectCountListAPI } from '@/api/synthesize-query/project-count'
export default { export default {
name: 'ProjectCount', name: 'Project-count',
components: { components: {
TableModel, TableModel,
}, },

View File

@ -40,7 +40,7 @@ import TableModel from '@/components/TableModel'
import { formLabel, columnsList } from './config' import { formLabel, columnsList } from './config'
import { getSubCountListAPI } from '@/api/synthesize-query/sub-count' import { getSubCountListAPI } from '@/api/synthesize-query/sub-count'
export default { export default {
name: 'SubCount', name: 'Sub-count',
components: { components: {
TableModel, TableModel,
}, },

View File

@ -47,7 +47,7 @@ import TableModel from '@/components/TableModel'
import { formLabel, columnsList } from './config' import { formLabel, columnsList } from './config'
import { getThreeAndOneListAPI } from '@/api/synthesize-query/three-and-one' import { getThreeAndOneListAPI } from '@/api/synthesize-query/three-and-one'
export default { export default {
name: 'ThreeAndOne', name: 'Three-and-one',
dicts: ['project_status'], dicts: ['project_status'],
components: { components: {
TableModel, TableModel,

View File

@ -10,7 +10,7 @@
import DataFilter from './components/dataFilter.vue' import DataFilter from './components/dataFilter.vue'
import WageDetails from './components/wage-details.vue' import WageDetails from './components/wage-details.vue'
export default { export default {
name: 'WageCount', name: 'Wage-count',
components: { components: {
DataFilter, DataFilter,
WageDetails, WageDetails,

View File

@ -1,96 +1,234 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" <el-form
label-width="68px"> :model="queryParams"
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="68px"
>
<el-form-item label="登录账号" prop="userName"> <el-form-item label="登录账号" prop="userName">
<el-input v-model="queryParams.userName" placeholder="请输入登录账号" clearable /> <el-input
v-model="queryParams.userName"
placeholder="请输入登录账号"
clearable
/>
</el-form-item> </el-form-item>
<el-form-item label="姓名" prop="nickName"> <el-form-item label="姓名" prop="nickName">
<el-input v-model="queryParams.nickName" placeholder="请输入姓名" clearable /> <el-input
v-model="queryParams.nickName"
placeholder="请输入姓名"
clearable
/>
</el-form-item> </el-form-item>
<el-form-item label="权限范围" prop="permissionRange"> <el-form-item label="权限范围" prop="permissionRange">
<el-input v-model="queryParams.permissionRange" placeholder="请输入权限范围" clearable /> <el-input
v-model="queryParams.permissionRange"
placeholder="请输入权限范围"
clearable
/>
</el-form-item> </el-form-item>
<el-form-item label="角色" prop="roleId"> <el-form-item label="角色" prop="roleId">
<el-select v-model="queryParams.roleId" clearable placeholder="请选择角色"> <el-select
<el-option v-for="item in roleArr" :key="item.value" :label="item.name" :value="item.value"> v-model="queryParams.roleId"
clearable
placeholder="请选择角色"
>
<el-option
v-for="item in roleArr"
:key="item.value"
:label="item.name"
:value="item.value"
>
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="角色级别" prop="permissionType"> <el-form-item label="角色级别" prop="permissionType">
<el-select clearable v-model="queryParams.permissionType" placeholder="请选择角色级别"> <el-select
<el-option v-for="item in dict.type.role_level" :key="item.value" :label="item.label" clearable
:value="item.value"></el-option> v-model="queryParams.permissionType"
placeholder="请选择角色级别"
>
<el-option
v-for="item in dict.type.role_level"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="状态" prop="status"> <el-form-item label="状态" prop="status">
<el-select clearable v-model="queryParams.status" placeholder="请选择状态"> <el-select
<el-option v-for="item in dict.type.sys_normal_disable" :key="item.value" :label="item.label" clearable
:value="item.value"></el-option> v-model="queryParams.status"
placeholder="请选择状态"
>
<el-option
v-for="item in dict.type.sys_normal_disable"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select> </el-select>
</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
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> type="primary"
<el-button size="mini" plain type="success" icon="el-icon-download" @click="handleExport" icon="el-icon-search"
v-hasPermi="['system:user:export']">导出</el-button> size="mini"
<el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" @click="handleQuery"
v-hasPermi="['system:user:add']">新增</el-button> >搜索</el-button
>
<el-button
icon="el-icon-refresh"
size="mini"
@click="resetQuery"
>重置</el-button
>
<el-button
size="mini"
plain
type="success"
icon="el-icon-download"
@click="handleExport"
v-hasPermi="['system:user:export']"
>导出</el-button
>
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['system:user:add']"
>新增</el-button
>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row> </el-row>
<el-table v-loading="loading" :data="userList"> <el-table v-loading="loading" :data="userList">
<el-table-column label="序号" align="center" width="80" type="index"> <el-table-column
label="序号"
align="center"
width="80"
type="index"
>
<template scope="scope"> <template scope="scope">
<span>{{ (queryParams.pageNum - 1) * 10 + scope.$index + 1 }}</span> <span>{{
(queryParams.pageNum - 1) * 10 + scope.$index + 1
}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="登录账号" align="center" prop="userName"> <el-table-column label="登录账号" align="center" prop="userName">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ hidePhone(scope.row.userName,scope.row) }}</span> <span>{{ hidePhone(scope.row.userName, scope.row) }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="姓名" align="center" prop="nickName" /> <el-table-column label="姓名" align="center" prop="nickName" />
<el-table-column label="角色" align="center" prop="roleName" /> <el-table-column label="角色" align="center" prop="roleName" />
<el-table-column label="角色级别" align="center" prop="roleLevel" /> <el-table-column label="角色级别" align="center" prop="roleLevel" />
<el-table-column label="权限范围" align="center" prop="permissionRange" /> <el-table-column
<el-table-column prop="status" align="center" label="状态" min-width="60"> label="权限范围"
align="center"
prop="permissionRange"
/>
<el-table-column
prop="status"
align="center"
label="状态"
min-width="60"
>
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status" /> <dict-tag
:options="dict.type.sys_normal_disable"
:value="scope.row.status"
/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="更新时间" align="center" prop="updateTime" width="180"></el-table-column> <el-table-column
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> label="更新时间"
align="center"
prop="updateTime"
width="180"
></el-table-column>
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
>
<template slot-scope="scope"> <template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-key" @click="handleResetPwd(scope.row)" <el-button
v-hasPermi="['system:user:resetPwd']">重置密码</el-button> size="mini"
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" type="text"
v-hasPermi="['system:user:edit']">修改</el-button> icon="el-icon-key"
<el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" @click="handleResetPwd(scope.row)"
v-hasPermi="['system:user:remove']">删除</el-button> v-hasPermi="['system:user:resetPwd']"
>重置密码</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
>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" <pagination
:limit.sync="queryParams.pageSize" @pagination="getList" /> v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 新增/编辑 --> <!-- 新增/编辑 -->
<UserForm v-if="isflag" :isAdd="isAdd" :rowData="row" @handleQuery="handleQuery" :title="title" <UserForm
@closeDialog="closeDialog" @showColose="showColose" :dataForm="row" :disabled="loading" :width="600" /> v-if="isflag"
:isAdd="isAdd"
:rowData="row"
@handleQuery="handleQuery"
:title="title"
@closeDialog="closeDialog"
@showColose="showColose"
:dataForm="row"
:disabled="loading"
:width="600"
/>
</div> </div>
</template> </template>
<script> <script>
import { listUser, getRoleList,delUser,confirmPassword,resetUserPwd } from "@/api/system/user"; import {
import { validateNewPassword} from '@/utils/validate' listUser,
import UserForm from "./prop/userForm.vue"; getRoleList,
delUser,
confirmPassword,
resetUserPwd,
} from '@/api/system/user'
import { validateNewPassword } from '@/utils/validate'
import UserForm from './prop/userForm.vue'
export default { export default {
name: "User", name: 'User',
dicts: ['role_level', 'sys_normal_disable'], dicts: ['role_level', 'sys_normal_disable'],
components: { components: {
UserForm UserForm,
}, },
data() { data() {
return { return {
@ -105,7 +243,7 @@ export default {
userList: [], userList: [],
roleArr: [], roleArr: [],
// //
title: "", title: '',
// //
open: false, open: false,
// //
@ -123,74 +261,81 @@ export default {
form: {}, form: {},
isflag: false, isflag: false,
row: {}, row: {},
isAdd: '' isAdd: '',
}; }
}, },
created() { created() {
this.initRoles(); this.initRoles()
this.getList(); this.getList()
}, },
methods: { methods: {
/* 手机号码脱敏 */ /* 手机号码脱敏 */
hidePhone(phone,row) { hidePhone(phone, row) {
if (!phone) return '' if (!phone) return ''
return phone.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2') return phone.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2')
}, },
// //
async initRoles() { async initRoles() {
await getRoleList({}).then(res => { await getRoleList({})
const list = res.data; .then((res) => {
this.roleArr = list; const list = res.data
}).catch(error => { this.roleArr = list
}) })
.catch((error) => {})
}, },
/** 用户列表 */ /** 用户列表 */
getList() { getList() {
this.loading = true; this.loading = true
listUser(this.queryParams).then(response => { listUser(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
}); })
}, },
closeDialog() { closeDialog() {
this.isflag = false; this.isflag = false
}, },
showColose() { showColose() {
this.isflag = false; this.isflag = false
}, },
/** 搜索按钮操作 */ /** 搜索按钮操作 */
handleQuery() { handleQuery() {
this.queryParams.pageNum = 1; this.queryParams.pageNum = 1
this.getList(); this.getList()
}, },
/** 重置按钮操作 */ /** 重置按钮操作 */
resetQuery() { resetQuery() {
this.resetForm("queryForm"); this.resetForm('queryForm')
this.handleQuery(); this.handleQuery()
}, },
/** 新增按钮操作 */ /** 新增按钮操作 */
handleAdd() { handleAdd() {
this.title = "新增"; this.title = '新增'
this.isAdd = 'add'; this.isAdd = 'add'
this.isflag = true; this.isflag = true
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
handleUpdate(row) { handleUpdate(row) {
this.title = "修改"; this.title = '修改'
this.isAdd = 'edit'; this.isAdd = 'edit'
this.row = row; this.row = row
this.isflag = true; this.isflag = true
}, },
/** 删除按钮操作 */ /** 删除按钮操作 */
handleDelete(row) { handleDelete(row) {
const userIds = row.userId ? [row.userId] : []; const userIds = row.userId ? [row.userId] : []
this.$modal.confirm('是否确认删除登录账号为"' + row.userName + '"的数据项?').then(function () { this.$modal
return delUser(userIds); .confirm(
}).then(() => { '是否确认删除登录账号为"' + row.userName + '"的数据项?',
this.getList(); )
this.$modal.msgSuccess("删除成功"); .then(function () {
}).catch(() => { }); return delUser(userIds)
})
.then(() => {
this.getList()
this.$modal.msgSuccess('删除成功')
})
.catch(() => {})
}, },
confirmResetPwd(row) { confirmResetPwd(row) {
this.$prompt('请输入密码,鉴别用户', '提示', { this.$prompt('请输入密码,鉴别用户', '提示', {
@ -212,7 +357,7 @@ export default {
}, },
}) })
.then(({ value }) => { .then(({ value }) => {
confirmPassword(value,row.userId).then((response) => { confirmPassword(value, row.userId).then((response) => {
this.$modal.msgSuccess('验证成功') this.$modal.msgSuccess('验证成功')
this.handleResetPwd(row) this.handleResetPwd(row)
}) })
@ -257,6 +402,6 @@ export default {
`user_${new Date().getTime()}.xlsx`, `user_${new Date().getTime()}.xlsx`,
) )
}, },
} },
}; }
</script> </script>