业主管理、设备类型管理、项目类型、设备管理管理功能开发。
This commit is contained in:
parent
98eef3af01
commit
db57695418
|
|
@ -0,0 +1,94 @@
|
|||
import request from '@/utils/request'
|
||||
|
||||
// 获取层级列表
|
||||
export function getDeviceListApi(query) {
|
||||
return request({
|
||||
url: '/device/list',
|
||||
method: 'get',
|
||||
params: query,
|
||||
})
|
||||
}
|
||||
// 新增层级
|
||||
export function addDeviceApi(data) {
|
||||
return request({
|
||||
url: '/device/add',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
// 删除层级
|
||||
export function delDeviceApi(data) {
|
||||
return request({
|
||||
url: '/device/del',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
// 修改层级
|
||||
export function editDeviceApi(data) {
|
||||
return request({
|
||||
url: '/device/update',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// 获取层级列表
|
||||
export function getDeviceByIdApi(query) {
|
||||
return request({
|
||||
url: '/device/getById',
|
||||
method: 'get',
|
||||
params: query,
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
// 查询设备类型下拉接口
|
||||
export function getDeviceSelectList() {
|
||||
return request({
|
||||
url: '/device/getDeviceType',
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
|
||||
// 查询获取设备管理人
|
||||
export function getDeviceKeepUser() {
|
||||
return request({
|
||||
url: '/device/getDeviceKeepUser',
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
|
||||
// 退还
|
||||
export function addUseApi(data) {
|
||||
return request({
|
||||
url: '/device/use',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
export function getLastUse(query) {
|
||||
return request({
|
||||
url: '/device/getLastUse',
|
||||
method: 'get',
|
||||
params: query,
|
||||
})
|
||||
}
|
||||
|
||||
export function returnDeviceApi(data) {
|
||||
return request({
|
||||
url: '/device/returnDevice',
|
||||
method: 'post',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// 获取领用记录
|
||||
export function getRecordListApi(query) {
|
||||
return request({
|
||||
url: '/device/getRecordList',
|
||||
method: 'get',
|
||||
params: query,
|
||||
})
|
||||
}
|
||||
|
|
@ -19,7 +19,7 @@
|
|||
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button plain size="mini" type="primary" icon="el-icon-plus" @click="handleAddDeviceType">
|
||||
<el-button plain size="mini" type="primary" icon="el-icon-plus" @click="handleAddDeviceType" v-hasPermi="['device:type:add']">
|
||||
新增设备类型
|
||||
</el-button>
|
||||
</el-col>
|
||||
|
|
@ -42,7 +42,7 @@
|
|||
type="text"
|
||||
icon="el-icon-edit"
|
||||
@click="handleEdit(scope.row)"
|
||||
v-hasPermi="['basic:device:edit']"
|
||||
v-hasPermi="['device:type:update']"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
|
|
@ -52,7 +52,7 @@
|
|||
icon="el-icon-delete"
|
||||
style="color: #f56c6c"
|
||||
@click="handleDelete(scope.row)"
|
||||
v-hasPermi="['basic:device:remove']"
|
||||
v-hasPermi="['device:type:del']"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
|
|
|
|||
|
|
@ -2,21 +2,30 @@
|
|||
<!-- 基础管理-设备管理-新增或编辑 -->
|
||||
<div>
|
||||
<el-form :model="addOrEditForm" :rules="addOrEditFormRules" ref="addOrEditFormRef" label-width="100px">
|
||||
<el-form-item label="设备名称" prop="deviceName">
|
||||
<el-input v-model="addOrEditForm.deviceName" placeholder="请输入设备名称" />
|
||||
|
||||
<el-form-item label="设备类型" prop="deviceType">
|
||||
<el-select v-model="addOrEditForm.deviceType" placeholder="设备类型" style="width: 100%">
|
||||
<el-option
|
||||
:key="item.id"
|
||||
:value="item.id"
|
||||
:label="item.name"
|
||||
v-for="item in deviceList"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="设备编码" prop="deviceCode">
|
||||
<el-input v-model="addOrEditForm.deviceCode" placeholder="请输入设备编码"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="设备保管人" prop="Keeper">
|
||||
<el-form-item label="设备保管人" prop="userId">
|
||||
<el-select
|
||||
clearable
|
||||
filterable
|
||||
style="width: 100%"
|
||||
v-model="addOrEditForm.Keeper"
|
||||
v-model="addOrEditForm.userId"
|
||||
placeholder="请选择设备保管人"
|
||||
>
|
||||
<el-option v-for="item in KeeperList" :key="item.id" :label="item.name" :value="item.id" />
|
||||
<el-option v-for="item in userList" :key="item.id" :label="item.name" :value="item.id"/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
|
|
@ -37,44 +46,73 @@
|
|||
</template>
|
||||
|
||||
<script>
|
||||
import {getDeviceSelectList,getDeviceKeepUser,addDeviceApi, editDeviceApi } from '@/api/basic/device-manage'
|
||||
|
||||
export default {
|
||||
name: 'AddOrEditForm',
|
||||
|
||||
data() {
|
||||
return {
|
||||
addOrEditForm: {
|
||||
deviceName: '',
|
||||
deviceType: '',
|
||||
deviceCode: '',
|
||||
Keeper: '',
|
||||
userId: '',
|
||||
remark: '',
|
||||
id: undefined,
|
||||
},
|
||||
addOrEditFormRules: {
|
||||
deviceName: [{ required: true, message: '请输入设备名称', trigger: 'blur' }],
|
||||
deviceType: [{required: true, message: '请选择设备类型', trigger: 'change'}],
|
||||
deviceCode: [{required: true, message: '请输入设备编码', trigger: 'blur'}],
|
||||
Keeper: [{ required: true, message: '请选择设备保管人', trigger: 'change' }],
|
||||
userId: [{required: true, message: '请选择设备保管人', trigger: 'change'}],
|
||||
},
|
||||
|
||||
KeeperList: [
|
||||
{
|
||||
id: '张三',
|
||||
name: '张三',
|
||||
},
|
||||
{
|
||||
id: '李四',
|
||||
name: '李四',
|
||||
},
|
||||
],
|
||||
userList: [],
|
||||
deviceList: []
|
||||
}
|
||||
},
|
||||
created() {
|
||||
getDeviceSelectList().then(res => {
|
||||
this.deviceList = res.data
|
||||
});
|
||||
getDeviceKeepUser().then(res => {
|
||||
this.userList = res.data
|
||||
});
|
||||
},
|
||||
methods: {
|
||||
cancel() {
|
||||
this.addOrEditForm.deviceType='';
|
||||
this.addOrEditForm.deviceCode='';
|
||||
this.addOrEditForm.userId='';
|
||||
this.addOrEditForm.remark='';
|
||||
this.addOrEditForm.id=undefined;
|
||||
this.$emit('closeAddOrEditFormDialog')
|
||||
},
|
||||
submitForm() {
|
||||
// this.$emit('submitForm')
|
||||
this.$refs.addOrEditFormRef.validate((valid) => {
|
||||
this.$refs.addOrEditFormRef.validate(async (valid) => {
|
||||
if (valid) {
|
||||
this.$emit('closeAddOrEditFormDialog')
|
||||
// 组装参数
|
||||
const params = {
|
||||
deviceType: this.addOrEditForm.deviceType,
|
||||
deviceCode: this.addOrEditForm.deviceCode?.trim() ?? '',
|
||||
userId: this.addOrEditForm.userId,
|
||||
remark: this.addOrEditForm.remark?.trim() ?? '',
|
||||
status:0,
|
||||
}
|
||||
if (this.addOrEditForm.id) {
|
||||
params.id = this.addOrEditForm.id
|
||||
params.status = undefined
|
||||
}
|
||||
const API = this.addOrEditForm.id ? editDeviceApi : addDeviceApi
|
||||
|
||||
const res = await API(params)
|
||||
if (res.code === 200) {
|
||||
this.$modal.msgSuccess(this.addOrEditForm.id ? '修改成功' : '新增成功')
|
||||
this.addOrEditForm.deviceType='';
|
||||
this.addOrEditForm.deviceCode='';
|
||||
this.addOrEditForm.userId='';
|
||||
this.addOrEditForm.remark='';
|
||||
this.addOrEditForm.id=undefined;
|
||||
this.$emit('closeAddOrEditFormDialog', true)
|
||||
}
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
|
|
@ -85,12 +123,13 @@ export default {
|
|||
},
|
||||
|
||||
setFormData(data) {
|
||||
const { deviceName, deviceCode, remark, Keeper } = data
|
||||
const {deviceType, deviceCode, userId, remark ,id} = data
|
||||
this.addOrEditForm = {
|
||||
deviceName,
|
||||
deviceType,
|
||||
deviceCode,
|
||||
userId,
|
||||
remark,
|
||||
Keeper,
|
||||
id
|
||||
}
|
||||
},
|
||||
},
|
||||
|
|
|
|||
|
|
@ -2,30 +2,38 @@
|
|||
<!-- 基础管理-设备管理 -->
|
||||
<div class="app-container">
|
||||
<el-form size="small" :inline="true" ref="queryForm" :model="queryParams">
|
||||
<el-form-item label="项目名称" prop="proName">
|
||||
<el-form-item label="设备类型" prop="deviceType">
|
||||
<el-select
|
||||
placeholder="请选择设备类型"
|
||||
style="width: 240px"
|
||||
v-model="queryParams.deviceType"
|
||||
@keyup.enter.native="handleQuery"
|
||||
>
|
||||
<el-option :key="item.id" :value="item.id" :label="item.name" v-for="item in deviceSelectList"/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="设备编号" prop="deviceCode">
|
||||
<el-input
|
||||
clearable
|
||||
placeholder="请输入项目名称"
|
||||
v-model="queryParams.proName"
|
||||
placeholder="请输入设备编号"
|
||||
v-model="queryParams.deviceCode"
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="所属单位" prop="unit">
|
||||
<el-input
|
||||
clearable
|
||||
placeholder="请输入所属单位"
|
||||
v-model="queryParams.unit"
|
||||
|
||||
<el-form-item label="设备状态" prop="status">
|
||||
<el-select
|
||||
placeholder="请选择设备状态"
|
||||
style="width: 240px"
|
||||
v-model="queryParams.status"
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="负责人" prop="chargePerson">
|
||||
<el-input
|
||||
clearable
|
||||
placeholder="请输入负责人"
|
||||
v-model="queryParams.chargePerson"
|
||||
@keyup.enter.native="handleQuery"
|
||||
/>
|
||||
>
|
||||
<el-option key="0" value="0" label="闲置" />
|
||||
<el-option key="1" value="1" label="在用" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<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>
|
||||
|
|
@ -40,7 +48,7 @@
|
|||
type="primary"
|
||||
icon="el-icon-plus"
|
||||
@click="handleAddDevice"
|
||||
v-hasPermi="['basic:device:add']"
|
||||
v-hasPermi="['device:add']"
|
||||
>
|
||||
新增
|
||||
</el-button>
|
||||
|
|
@ -49,32 +57,54 @@
|
|||
|
||||
<el-table v-loading="loading" :data="deviceList" border>
|
||||
<el-table-column label="序号" align="center" type="index"/>
|
||||
<el-table-column
|
||||
align="center"
|
||||
:key="item.prop"
|
||||
:label="item.label"
|
||||
:prop="item.prop"
|
||||
v-for="item in columnList"
|
||||
/>
|
||||
<!-- 设备类型 -->
|
||||
<el-table-column label="设备类型" align="center" prop="deviceTypeName" />
|
||||
<!-- 设备编号 -->
|
||||
<el-table-column label="设备编号" align="center" prop="deviceCode" />
|
||||
<!-- 所属保管人 -->
|
||||
<el-table-column label="所属保管人" align="center" prop="userName" />
|
||||
<!-- 设备状态:特殊处理 -->
|
||||
<el-table-column label="设备状态" align="center">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.status === '0' ? '闲置' : scope.row.status === '1' ? '在用' : scope.row.status }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 备注 -->
|
||||
<el-table-column label="备注" align="center" prop="remark" />
|
||||
|
||||
<el-table-column label="操作" align="center" width="240">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
v-if="scope.row.status === '0'"
|
||||
size="mini"
|
||||
type="text"
|
||||
@click="handleUseOrReturn(scope.row)"
|
||||
v-hasPermi="['basic:device:use-or-return']"
|
||||
:style="scope.row.status == '正常' ? 'color: #02bc76' : 'color: #8b9800'"
|
||||
:icon="scope.row.status == '正常' ? 'el-icon-upload2' : 'el-icon-download'"
|
||||
@click="handleUse(scope.row)"
|
||||
v-hasPermi="['device:use']"
|
||||
style="color: #02bc76"
|
||||
icon="el-icon-upload2"
|
||||
>
|
||||
{{ scope.row.status == '正常' ? '领用' : '归还' }}
|
||||
领用
|
||||
</el-button>
|
||||
|
||||
<!-- 归还按钮:仅当 status === '1'(已领用/在用)时显示 -->
|
||||
<el-button
|
||||
v-if="scope.row.status === '1'"
|
||||
size="mini"
|
||||
type="text"
|
||||
@click="handleReturn(scope.row)"
|
||||
v-hasPermi="['device:return']"
|
||||
style="color: #8b9800"
|
||||
icon="el-icon-download"
|
||||
>
|
||||
归还
|
||||
</el-button>
|
||||
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-document"
|
||||
@click="handleViewRecord(scope.row)"
|
||||
v-hasPermi="['basic:device:record']"
|
||||
v-hasPermi="['device:details']"
|
||||
>
|
||||
记录
|
||||
</el-button>
|
||||
|
|
@ -83,7 +113,7 @@
|
|||
type="text"
|
||||
icon="el-icon-edit"
|
||||
@click="handleEdit(scope.row)"
|
||||
v-hasPermi="['basic:device:edit']"
|
||||
v-hasPermi="['device:update']"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
|
|
@ -93,7 +123,7 @@
|
|||
icon="el-icon-delete"
|
||||
style="color: #f56c6c"
|
||||
@click="handleDelete(scope.row)"
|
||||
v-hasPermi="['basic:device:remove']"
|
||||
v-hasPermi="['device:del']"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
|
|
@ -124,7 +154,7 @@
|
|||
|
||||
<!-- 使用记录对话框 -->
|
||||
<el-dialog width="90%" append-to-body title="领用记录" :visible.sync="useRecordFormVisible">
|
||||
<UseRecordTable />
|
||||
<UseRecordTable ref="useRecordTableComponentRef"/>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
|
@ -133,6 +163,10 @@
|
|||
import AddOrEditForm from './addOrEditForm.vue'
|
||||
import UseOrReturnForm from './useOrReturnForm.vue'
|
||||
import UseRecordTable from './useRecordTable.vue'
|
||||
|
||||
import {getDeviceListApi, delDeviceApi,getDeviceSelectList,getLastUse} from '@/api/basic/device-manage'
|
||||
|
||||
|
||||
export default {
|
||||
name: 'DeviceManage',
|
||||
components: {
|
||||
|
|
@ -149,31 +183,16 @@ export default {
|
|||
useOrReturnFormTitle: '领用', // 领用或归还对话框标题
|
||||
useOrReturnFormVisible: false, // 领用或归还对话框是否显示
|
||||
useRecordFormVisible: false, // 使用记录对话框是否显示
|
||||
// 设备类型下拉
|
||||
deviceSelectList:[],
|
||||
// 设备列表
|
||||
deviceList: [
|
||||
{
|
||||
id: 1,
|
||||
deviceName: '设备1',
|
||||
deviceCode: '123456',
|
||||
Keeper: '张三',
|
||||
status: '正常',
|
||||
remark: '备注1',
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
deviceName: '设备2',
|
||||
deviceCode: '123456',
|
||||
Keeper: '李四',
|
||||
status: '异常',
|
||||
remark: '备注2',
|
||||
},
|
||||
],
|
||||
deviceList: [],
|
||||
|
||||
// 列配置
|
||||
columnList: [
|
||||
{
|
||||
label: '设备名称',
|
||||
prop: 'deviceName',
|
||||
label: '设备类型',
|
||||
prop: 'deviceTypeName',
|
||||
},
|
||||
{
|
||||
label: '设备编号',
|
||||
|
|
@ -181,11 +200,7 @@ export default {
|
|||
},
|
||||
{
|
||||
label: '所属保管人',
|
||||
prop: 'Keeper',
|
||||
},
|
||||
{
|
||||
label: '设备状态',
|
||||
prop: 'status',
|
||||
prop: 'userName',
|
||||
},
|
||||
{
|
||||
label: '备注',
|
||||
|
|
@ -197,16 +212,24 @@ export default {
|
|||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
proName: undefined,
|
||||
unit: undefined,
|
||||
chargePerson: undefined,
|
||||
deviceType: undefined,
|
||||
deviceCode: undefined,
|
||||
status: undefined,
|
||||
},
|
||||
}
|
||||
},
|
||||
created() {
|
||||
// this.getDeviceList()
|
||||
this.getDeviceSelectList()
|
||||
this.getDeviceList()
|
||||
},
|
||||
methods: {
|
||||
|
||||
// 获取设备类型下拉接口
|
||||
async getDeviceSelectList() {
|
||||
const {data: res} = await getDeviceSelectList()
|
||||
this.deviceSelectList = res
|
||||
},
|
||||
|
||||
// 查询按钮
|
||||
handleQuery() {
|
||||
this.queryParams.pageNum = 1
|
||||
|
|
@ -229,32 +252,64 @@ export default {
|
|||
// 获取设备列表
|
||||
getDeviceList() {
|
||||
this.loading = true
|
||||
listProject(this.queryParams).then((response) => {
|
||||
this.proList = response.rows
|
||||
getDeviceListApi(this.queryParams).then((response) => {
|
||||
this.deviceList = response.rows
|
||||
this.total = response.total
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
|
||||
// 领用或归还按钮
|
||||
handleUseOrReturn(row) {
|
||||
console.log(row)
|
||||
this.useOrReturnFormTitle = row.status == '正常' ? '领用' : '归还'
|
||||
// 领用
|
||||
handleUse(row) {
|
||||
this.useOrReturnFormTitle = '领用'
|
||||
this.useOrReturnFormVisible = true
|
||||
this.$nextTick(() => {
|
||||
// 传递 status 和 deviceId 给子组件
|
||||
this.$refs.useOrReturnFormComponentRef.setFormData({
|
||||
status: '0',
|
||||
deviceId: row.id,
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
handleReturn( row){
|
||||
this.useOrReturnFormTitle = '归还'
|
||||
this.useOrReturnFormVisible = true
|
||||
var data ={
|
||||
deviceId:row.id
|
||||
}
|
||||
getLastUse(data).then((response) => {
|
||||
var list = response.data
|
||||
this.$nextTick(() => {
|
||||
// 传递 status 和 deviceId 给子组件
|
||||
this.$refs.useOrReturnFormComponentRef.setFormData({
|
||||
status: '1',
|
||||
deviceId: row.id,
|
||||
userName: list.userName,
|
||||
startTime: list.startTime
|
||||
})
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 查看记录按钮
|
||||
handleViewRecord(row) {
|
||||
console.log(row)
|
||||
this.useRecordFormVisible = true
|
||||
this.$nextTick(() => {
|
||||
// 传递 status 和 deviceId 给子组件
|
||||
this.$refs.useRecordTableComponentRef.setFormData({
|
||||
deviceId: row.id,
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
// 编辑按钮
|
||||
handleEdit(row) {
|
||||
this.addOrEditFormTitle = '编辑'
|
||||
this.addOrEditFormVisible = true
|
||||
const { deviceId, deviceName, deviceCode, remark, Keeper } = row
|
||||
const editForm = { deviceId, deviceName, deviceCode, remark, Keeper }
|
||||
const {deviceType, deviceCode, userId, remark ,id} = row
|
||||
const editForm = {deviceType, deviceCode, userId : userId != null ? String(userId) : undefined, remark ,id: id != null ? String(id) : undefined}
|
||||
console.log(editForm)
|
||||
this.$nextTick(() => {
|
||||
this.$refs.addOrEditComponentRef.setFormData(editForm)
|
||||
})
|
||||
|
|
@ -267,18 +322,35 @@ export default {
|
|||
},
|
||||
|
||||
// 删除按钮
|
||||
handleDelete(row) {},
|
||||
handleDelete(row) {
|
||||
this.$modal.confirm('是否确认设备类型编号为"' + row.id + '"的数据项?').then(async () => {
|
||||
var data ={id:row.id}
|
||||
const res = await delDeviceApi(data)
|
||||
if (res.code === 200) {
|
||||
this.$modal.msgSuccess('删除成功')
|
||||
this.getDeviceList()
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
// 关闭新增或编辑对话框
|
||||
closeAddOrEditFormDialog() {
|
||||
closeAddOrEditFormDialog(isRefresh) {
|
||||
this.$refs.addOrEditComponentRef.resetForm()
|
||||
this.addOrEditFormVisible = false
|
||||
if (isRefresh) {
|
||||
this.getDeviceList()
|
||||
}
|
||||
},
|
||||
|
||||
// 关闭领用或归还对话框
|
||||
closeUseOrReturnFormDialog() {
|
||||
closeUseOrReturnFormDialog(isRefresh) {
|
||||
console.log(isRefresh)
|
||||
console.log('关闭领用或归还对话框')
|
||||
this.$refs.useOrReturnFormComponentRef.resetForm()
|
||||
this.useOrReturnFormVisible = false
|
||||
if (isRefresh) {
|
||||
this.getDeviceList()
|
||||
}
|
||||
},
|
||||
},
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,10 +1,26 @@
|
|||
<template>
|
||||
<!-- 基础管理-设备管理-领用或归还 -->
|
||||
<div>
|
||||
<el-form :model="useOrReturnForm" :rules="useOrReturnFormRules" ref="useOrReturnFormRef" label-width="100px">
|
||||
<el-form
|
||||
:model="useOrReturnForm"
|
||||
:rules="computedRules"
|
||||
ref="useOrReturnFormRef"
|
||||
label-width="100px"
|
||||
>
|
||||
<!-- 领用时显示 -->
|
||||
<template v-if="formStatus == '0'">
|
||||
<el-form-item label="领用人" prop="user">
|
||||
<el-input v-model="useOrReturnForm.user" placeholder="请输入领用人" />
|
||||
<el-select
|
||||
clearable
|
||||
filterable
|
||||
style="width: 100%"
|
||||
v-model="useOrReturnForm.user"
|
||||
placeholder="请选择设备领用人"
|
||||
>
|
||||
<el-option v-for="item in userList" :key="item.id" :label="item.name" :value="item.id"/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="领用时间" prop="useTime">
|
||||
<el-date-picker
|
||||
type="date"
|
||||
|
|
@ -14,10 +30,26 @@
|
|||
v-model="useOrReturnForm.useTime"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="退还人" prop="returnUser">
|
||||
<el-input v-model="useOrReturnForm.returnUser" placeholder="请输入退还人" />
|
||||
</el-form-item>
|
||||
</template>
|
||||
|
||||
<!-- 归还时显示 -->
|
||||
<template v-else-if="formStatus == '1'">
|
||||
<el-form-item label="领用人">
|
||||
<el-input v-model="displayBorrower" readonly/>
|
||||
</el-form-item>
|
||||
<el-form-item label="领用时间">
|
||||
<el-input v-model="displayBorrowerData" readonly/>
|
||||
</el-form-item>
|
||||
<el-form-item label="归还时间" prop="returnTime">
|
||||
<el-date-picker
|
||||
type="date"
|
||||
style="width: 100%"
|
||||
placeholder="选择归还时间"
|
||||
value-format="yyyy-MM-dd"
|
||||
v-model="useOrReturnForm.returnTime"
|
||||
/>
|
||||
</el-form-item>
|
||||
</template>
|
||||
<el-form-item>
|
||||
<el-button @click="cancel">取消</el-button>
|
||||
<el-button type="primary" @click="submitForm">确定</el-button>
|
||||
|
|
@ -27,43 +59,118 @@
|
|||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'useOrReturnForm',
|
||||
import {addUseApi, returnDeviceApi, getDeviceKeepUser,} from "@/api/basic/device-manage";
|
||||
|
||||
export default {
|
||||
name: 'UseOrReturnForm',
|
||||
data() {
|
||||
return {
|
||||
formStatus: undefined, // 默认领用
|
||||
deviceId: null,
|
||||
displayBorrower: "", // 用于展示领用人姓名(归还时)
|
||||
displayBorrowerData: "", // 用于展示领用人姓名(归还时)
|
||||
useOrReturnForm: {
|
||||
user: '',
|
||||
useTime: '',
|
||||
returnUser: '',
|
||||
returnTime: '',
|
||||
},
|
||||
useOrReturnFormRules: {
|
||||
user: [{ required: true, message: '请输入领用人', trigger: 'blur' }],
|
||||
useTime: [{ required: true, message: '请选择领用时间', trigger: 'change' }],
|
||||
returnUser: [{ required: true, message: '请输入退还人', trigger: 'blur' }],
|
||||
},
|
||||
userList: [],
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
// 动态规则:根据状态决定校验项
|
||||
computedRules() {
|
||||
const rules = {}
|
||||
if (this.formStatus == '0') {
|
||||
rules.user = [{required: true, message: '请选择领用人', trigger: 'change'}]
|
||||
rules.useTime = [{required: true, message: '请选择领用时间', trigger: 'change'}]
|
||||
} else if (this.formStatus == '1') {
|
||||
rules.returnTime = [{required: true, message: '请选择归还时间', trigger: 'change'}]
|
||||
}
|
||||
return rules
|
||||
}
|
||||
},
|
||||
created() {
|
||||
getDeviceKeepUser().then(res => {
|
||||
this.userList = res.data
|
||||
});
|
||||
},
|
||||
methods: {
|
||||
cancel() {
|
||||
// 重置表单(避免上次数据残留)
|
||||
this.resetForm()
|
||||
this.$emit('closeUseOrReturnFormDialog')
|
||||
},
|
||||
submitForm() {
|
||||
// this.$emit('submitForm')
|
||||
|
||||
this.$refs.useOrReturnFormRef.validate((valid) => {
|
||||
this.$refs.useOrReturnFormRef.validate(async (valid) => {
|
||||
if (valid) {
|
||||
this.$emit('closeUseOrReturnFormDialog')
|
||||
// 组装提交参数
|
||||
const params = {
|
||||
deviceId: this.deviceId,
|
||||
}
|
||||
var API = "";
|
||||
var name = "";
|
||||
if (this.formStatus == '0') {
|
||||
params.userId = this.useOrReturnForm.user
|
||||
params.startTime = this.useOrReturnForm.useTime
|
||||
params.status = '1';
|
||||
API = addUseApi;
|
||||
name = "领用成功";
|
||||
} else {
|
||||
params.endTime = this.useOrReturnForm.returnTime
|
||||
params.status = '0';
|
||||
API = returnDeviceApi;
|
||||
name = "退还成功";
|
||||
const returnDate = new Date(this.useOrReturnForm.returnTime);
|
||||
const borrowDate = new Date(this.displayBorrowerData);
|
||||
|
||||
if (returnDate < borrowDate) {
|
||||
this.$modal.msgError("归还时间不能早于领用时间")
|
||||
return false;
|
||||
}
|
||||
}
|
||||
const res = await API(params)
|
||||
if (res.code == 200) {
|
||||
this.$modal.msgSuccess(name)
|
||||
this.useOrReturnForm.user = '';
|
||||
this.useOrReturnForm.useTime = '';
|
||||
this.useOrReturnForm.returnUser = '';
|
||||
this.useOrReturnForm.returnTime = '';
|
||||
this.displayBorrower = '';
|
||||
this.displayBorrowerData = '';
|
||||
this.deviceId = undefined;
|
||||
this.$emit('closeUseOrReturnFormDialog', true)
|
||||
}
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
})
|
||||
},
|
||||
resetForm() {
|
||||
this.$refs.useOrReturnFormRef.resetFields()
|
||||
this.useOrReturnForm = {
|
||||
user: '',
|
||||
useTime: '',
|
||||
returnUser: '',
|
||||
returnTime: '',
|
||||
}
|
||||
this.displayBorrower = "";
|
||||
this.displayBorrowerData = "";
|
||||
this.formStatus = undefined
|
||||
this.deviceId = null
|
||||
},
|
||||
// 接收父组件传入的数据
|
||||
setFormData(data) {
|
||||
// 重置表单(避免上次数据残留)
|
||||
this.resetForm()
|
||||
const {status, deviceId, userName, startTime} = data
|
||||
this.formStatus = String(status) // 确保是字符串 '0' 或 '1'
|
||||
this.deviceId = deviceId
|
||||
this.displayBorrower = userName;
|
||||
if(startTime){
|
||||
this.displayBorrowerData = startTime.substr(0, 10);
|
||||
}
|
||||
},
|
||||
|
||||
setFormData(data) {},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -2,14 +2,38 @@
|
|||
<!-- 基础管理-设备管理-使用记录 -->
|
||||
<div>
|
||||
<el-form size="small" :inline="true" ref="queryForm" :model="queryParams">
|
||||
<el-form-item label="领用人" prop="user">
|
||||
<el-input
|
||||
clearable
|
||||
placeholder="请输入领用人"
|
||||
v-model="queryParams.chargePerson"
|
||||
@keyup.enter.native="handleQuery"
|
||||
<el-form-item label="领用时间" prop="startTime">
|
||||
<el-date-picker
|
||||
type="date"
|
||||
style="width: 100%"
|
||||
placeholder="选择领用时间"
|
||||
value-format="yyyy-MM-dd"
|
||||
v-model="queryParams.startTime"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="归还时间" prop="endTime">
|
||||
<el-date-picker
|
||||
type="date"
|
||||
style="width: 100%"
|
||||
placeholder="选择归还时间"
|
||||
value-format="yyyy-MM-dd"
|
||||
v-model="queryParams.endTime"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="领用人" prop="userId">
|
||||
<el-select
|
||||
clearable
|
||||
filterable
|
||||
style="width: 100%"
|
||||
v-model="queryParams.userId"
|
||||
placeholder="请选择设备领用人"
|
||||
>
|
||||
<el-option v-for="item in userList" :key="item.id" :label="item.name" :value="item.id"/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<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>
|
||||
|
|
@ -26,34 +50,98 @@
|
|||
v-for="item in columnList"
|
||||
/>
|
||||
</el-table>
|
||||
|
||||
<pagination
|
||||
v-show="total > 0"
|
||||
:total="total"
|
||||
:page.sync="queryParams.pageNum"
|
||||
:limit.sync="queryParams.pageSize"
|
||||
@pagination="fetchRecordList"
|
||||
/>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {getDeviceKeepUser, getRecordListApi} from '@/api/basic/device-manage'
|
||||
|
||||
export default {
|
||||
name: 'UseRecordTable',
|
||||
data() {
|
||||
return {
|
||||
total: 0, // 总条数
|
||||
deviceId: null,
|
||||
queryParams: {
|
||||
user: '',
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
userId: '',
|
||||
startTime: '',
|
||||
endTime: '',
|
||||
},
|
||||
recordList: [],
|
||||
userList: [],
|
||||
columnList: [
|
||||
{ prop: 'deviceName', label: '设备名称' },
|
||||
{ prop: 'deviceCode', label: '设备编码' },
|
||||
{ prop: 'user', label: '领用人' },
|
||||
{ prop: 'useTime', label: '领用日期' },
|
||||
{ prop: 'returnUser', label: '归还人' },
|
||||
{ prop: 'returnTime', label: '归还日期' },
|
||||
{prop: 'deviceTypeName', label: '设备类型'},
|
||||
{prop: 'deviceCode', label: '设备编号'},
|
||||
{prop: 'userName', label: '领用人'},
|
||||
{prop: 'startTime', label: '领用日期'},
|
||||
{prop: 'endTime', label: '归还日期'},
|
||||
],
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleQuery() {
|
||||
console.log(this.queryParams)
|
||||
created() {
|
||||
getDeviceKeepUser().then(res => {
|
||||
this.userList = res.data
|
||||
});
|
||||
},
|
||||
methods: {
|
||||
// 查询使用记录(带筛选条件)
|
||||
async handleQuery() {
|
||||
await this.fetchRecordList();
|
||||
},
|
||||
|
||||
// 重置查询条件
|
||||
resetQuery() {
|
||||
this.queryParams = {}
|
||||
this.queryParams.userId = '';
|
||||
this.queryParams.startTime = '';
|
||||
this.queryParams.endTime = '';
|
||||
this.fetchRecordList(); // 重置后重新查询
|
||||
},
|
||||
|
||||
// 核心:获取记录列表
|
||||
async fetchRecordList() {
|
||||
if (!this.deviceId) {
|
||||
this.recordList = [];
|
||||
return;
|
||||
}
|
||||
|
||||
const params = {
|
||||
deviceId: this.deviceId,
|
||||
...(this.queryParams.userId && { userId: this.queryParams.userId }),
|
||||
...(this.queryParams.startTime && { startTime: this.queryParams.startTime }),
|
||||
...(this.queryParams.endTime && { endTime: this.queryParams.endTime }),
|
||||
pageNum: this.queryParams.pageNum,
|
||||
pageSize: this.queryParams.pageSize,
|
||||
};
|
||||
|
||||
const res = await getRecordListApi(params);
|
||||
if (res.code === 200) {
|
||||
this.recordList = res.rows || [];
|
||||
this.total = res.total
|
||||
} else {
|
||||
this.recordList = [];
|
||||
this.$message.warning('获取使用记录失败');
|
||||
}
|
||||
},
|
||||
|
||||
// 接收父组件传入的数据
|
||||
setFormData(data) {
|
||||
// 重置表单(避免上次数据残留)
|
||||
this.resetForm()
|
||||
const {deviceId} = data
|
||||
this.deviceId = deviceId
|
||||
|
||||
this.resetQuery(); // 这会自动触发 fetchRecordList()
|
||||
},
|
||||
},
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button plain size="mini" type="primary" icon="el-icon-plus" @click="handleAddDeviceType">
|
||||
<el-button plain size="mini" type="primary" icon="el-icon-plus" @click="handleAddDeviceType" v-hasPermi="['owner:add']">
|
||||
新增业主单位
|
||||
</el-button>
|
||||
</el-col>
|
||||
|
|
@ -42,7 +42,7 @@
|
|||
type="text"
|
||||
icon="el-icon-edit"
|
||||
@click="handleEdit(scope.row)"
|
||||
v-hasPermi="['basic:device:edit']"
|
||||
v-hasPermi="['owner:update']"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
|
|
@ -52,7 +52,7 @@
|
|||
icon="el-icon-delete"
|
||||
style="color: #f56c6c"
|
||||
@click="handleDelete(scope.row)"
|
||||
v-hasPermi="['basic:device:remove']"
|
||||
v-hasPermi="['owner:del']"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button plain size="mini" type="primary" icon="el-icon-plus" @click="handleAddDeviceType">
|
||||
<el-button plain size="mini" type="primary" icon="el-icon-plus" @click="handleAddDeviceType" v-hasPermi="['pro:type:add']">
|
||||
新增项目类型
|
||||
</el-button>
|
||||
</el-col>
|
||||
|
|
@ -42,7 +42,7 @@
|
|||
type="text"
|
||||
icon="el-icon-edit"
|
||||
@click="handleEdit(scope.row)"
|
||||
v-hasPermi="['basic:device:edit']"
|
||||
v-hasPermi="['pro:type:update']"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
|
|
@ -52,7 +52,7 @@
|
|||
icon="el-icon-delete"
|
||||
style="color: #f56c6c"
|
||||
@click="handleDelete(scope.row)"
|
||||
v-hasPermi="['basic:device:remove']"
|
||||
v-hasPermi="['pro:type:del']"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
|
|
|
|||
Loading…
Reference in New Issue