This commit is contained in:
parent
77da66a42e
commit
3b2a5b2218
|
|
@ -2,25 +2,46 @@
|
|||
<el-dialog
|
||||
title="添加装备/工具"
|
||||
:visible.sync="visible"
|
||||
width="80%"
|
||||
width="1400px"
|
||||
@close="onClose"
|
||||
>
|
||||
<!-- 搜索条件 -->
|
||||
<el-form ref="queryForm" size="small" label-width="auto" :model="queryParams">
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="5">
|
||||
<el-form-item label="名称" prop="name">
|
||||
<el-input v-model="queryParams.name" placeholder="请输入名称" />
|
||||
<el-form ref="queryForm" label-width="70px" inline :model="queryParams">
|
||||
|
||||
<el-form-item label="名称" prop="typeName">
|
||||
<el-input v-model="queryParams.typeName" placeholder="请输入名称" clearable style="width: 202px"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
|
||||
<el-form-item label="规格型号" prop="typeModelName">
|
||||
<el-input v-model="queryParams.typeModelName" maxlength="20" placeholder="请输入规格型号" clearable style="width: 202px"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="设备编码" prop="devCode">
|
||||
<el-input v-model="queryParams.devCode" maxlength="20" placeholder="请输入编码" clearable style="width: 202px"/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="分类" prop="devType">
|
||||
<el-select v-model="queryParams.devType" placeholder="请选择分类" clearable>
|
||||
<el-select v-model="queryParams.devType" placeholder="请选择分类" clearable style="width: 202px">
|
||||
<el-option label="装备" value="1" />
|
||||
<el-option label="工具" value="2" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<!-- 新增:动态显示的管理模式下拉框 -->
|
||||
<el-form-item
|
||||
v-if="queryParams.devType === '2'"
|
||||
label="管理模式"
|
||||
prop="manageType"
|
||||
>
|
||||
<el-select
|
||||
v-model="queryParams.manageType"
|
||||
placeholder="请选择管理模式"
|
||||
clearable
|
||||
style="width: 202px"
|
||||
>
|
||||
<el-option label="编码设备" value="0"/>
|
||||
<el-option label="数量设备" value="1"/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- <!– 新增:装备分类下拉框 –>-->
|
||||
<!-- <el-col :span="5">-->
|
||||
<!-- <el-form-item label="装备类目" prop="equipmentCategory">-->
|
||||
|
|
@ -51,11 +72,10 @@
|
|||
<!-- />-->
|
||||
<!-- </el-form-item>-->
|
||||
<!-- </el-col>-->
|
||||
<el-col :span="13" style="text-align: right;">
|
||||
<el-form-item style="margin-left: 100px">
|
||||
<el-button type="primary" size="small" @click="onHandleQuery">查询</el-button>
|
||||
<el-button size="small" @click="onHandleReset">重置</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<!-- 在修装备/工具列表 -->
|
||||
|
|
@ -71,8 +91,14 @@
|
|||
>
|
||||
<el-table-column type="selection" width="50" />
|
||||
<el-table-column align="center" type="index" label="序号" width="100" />
|
||||
<el-table-column align="center" prop="devType" label="分类" min-width="70" />
|
||||
<el-table-column align="center" prop="typeName" label="类目" min-width="80" />
|
||||
<el-table-column align="center" prop="devType" label="分类" min-width="70" >
|
||||
<template slot-scope="scope">
|
||||
<span v-if="scope.row.devType==1">{{ '装备' }}</span>
|
||||
<span v-if="scope.row.devType==2">{{ '工具' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" prop="groupName" label="类目" min-width="80" />
|
||||
<el-table-column align="center" prop="typeName" label="名称" min-width="80" />
|
||||
<el-table-column align="center" prop="typeModelName" label="规格型号" min-width="100" />
|
||||
<el-table-column align="center" prop="manageMode" label="管理模式" min-width="80" />
|
||||
<el-table-column align="center" prop="devCode" label="设备编码" min-width="100" />
|
||||
|
|
@ -127,7 +153,11 @@ export default {
|
|||
visible: false,
|
||||
queryParams: {
|
||||
name: '',
|
||||
typeName:'',
|
||||
devType: '',
|
||||
manageType: '',
|
||||
typeModelName: '',
|
||||
devCode: '',
|
||||
equipmentCategory: [], // 新增:装备分类路径(数组)
|
||||
toolCategory: [], // 新增:工具分类路径(数组)
|
||||
equipmentCategoryId: '', // 新增:装备分类ID(用于接口查询)
|
||||
|
|
@ -200,7 +230,12 @@ export default {
|
|||
...this.queryParams,
|
||||
// 只传递最终的分类ID,简化接口参数
|
||||
equipmentCategory: this.queryParams.equipmentCategoryId,
|
||||
toolCategory: this.queryParams.toolCategoryId
|
||||
toolCategory: this.queryParams.toolCategoryId,
|
||||
manageType: this.queryParams.manageType,
|
||||
// 新增:将规格型号和设备编码加入查询参数
|
||||
typeModelName: this.queryParams.typeModelName,
|
||||
devCode: this.queryParams.devCode,
|
||||
typeName: this.queryParams.typeName,
|
||||
}
|
||||
const res = await getScrapItemListAPI(query)
|
||||
this.itemList = (res.rows || []).map(item => ({
|
||||
|
|
@ -221,7 +256,9 @@ export default {
|
|||
onHandleReset() {
|
||||
this.queryParams = {
|
||||
name: '',
|
||||
typeName: '',
|
||||
devType: '',
|
||||
manageType: '',
|
||||
equipmentCategory: [],
|
||||
toolCategory: [],
|
||||
equipmentCategoryId: '',
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@
|
|||
<div class="detail-section">
|
||||
<div class="section-header">
|
||||
<el-col :span="4">
|
||||
<span style="font-size: 20px; font-weight: 800">退役申请列表</span>
|
||||
<span style="font-size: 20px; font-weight: 800">退役申请设备</span>
|
||||
</el-col>
|
||||
<el-col :span="20" style="display: flex; justify-content: flex-end">
|
||||
<el-button type="primary" size="small" :disabled="!canEdit" @click="onHandleAddItem">
|
||||
|
|
|
|||
|
|
@ -44,20 +44,22 @@
|
|||
<el-input style="width: 200px" disabled v-model="queryParams.proCounty"/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="使用日期" prop="useTime">
|
||||
<el-form-item label="使用到期日期" prop="useTimeRange">
|
||||
<el-date-picker
|
||||
:disabled="!routerParams.isEdit"
|
||||
v-model="queryParams.useTime"
|
||||
type="date"
|
||||
format="yyyy-MM-dd"
|
||||
v-model="queryParams.useTimeRange"
|
||||
type="daterange"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="选择日期"
|
||||
style="width: 200px"
|
||||
@change="useTimeChange"
|
||||
style="width: 225px"
|
||||
>
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
|
||||
|
||||
|
||||
</el-form>
|
||||
|
||||
</el-card>
|
||||
|
|
@ -65,7 +67,7 @@
|
|||
<el-card>
|
||||
<el-row :gutter="10" class="mb8" justify="end">
|
||||
<el-col :span="4">
|
||||
<span style="font-size: 20px; font-weight: 800">自用申请列表</span>
|
||||
<span style="font-size: 20px; font-weight: 800">自用申请设备</span>
|
||||
</el-col>
|
||||
<el-col v-if="!routerParams.isView" :span="20" style="display: flex; justify-content: flex-end">
|
||||
<el-button type="primary" @click="handleDialog">添加</el-button>
|
||||
|
|
@ -106,15 +108,18 @@
|
|||
<el-table-column label="设备编码" align="center" prop="devCode" :show-overflow-tooltip="true" width="140px"/>
|
||||
<el-table-column label="当前库存" align="center" prop="storageNum" :show-overflow-tooltip="true"/>
|
||||
<el-table-column label="申请数量" align="center" prop="num" :show-overflow-tooltip="true"/>
|
||||
<el-table-column label="使用到期日期" align="center" prop="useTime" width="160px">
|
||||
<el-table-column label="使用到期日期" align="center" width="250px">
|
||||
<template slot-scope="scope">
|
||||
<el-date-picker
|
||||
:disabled="!routerParams.isEdit"
|
||||
v-model="scope.row.useTime"
|
||||
type="date"
|
||||
v-model="scope.row.useTimeRange"
|
||||
type="daterange"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
format="yyyy-MM-dd"
|
||||
value-format="yyyy-MM-dd"
|
||||
style="width: 100%"
|
||||
placeholder="选择日期"
|
||||
>
|
||||
</el-date-picker>
|
||||
</template>
|
||||
|
|
@ -156,6 +161,23 @@
|
|||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<!-- 新增:动态显示的管理模式下拉框 -->
|
||||
<el-form-item
|
||||
v-if="addQuery.devType === '2'"
|
||||
label="管理模式"
|
||||
prop="manageType"
|
||||
>
|
||||
<el-select
|
||||
v-model="addQuery.manageType"
|
||||
placeholder="请选择管理模式"
|
||||
clearable
|
||||
>
|
||||
<el-option label="编码设备" value="0"/>
|
||||
<el-option label="数量设备" value="1"/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
|
||||
<!-- <el-form-item label="装备分类" prop="categoryPath">-->
|
||||
<!-- <el-cascader-->
|
||||
<!-- v-model="addQuery.categoryPath"-->
|
||||
|
|
@ -260,6 +282,7 @@ export default {
|
|||
name: 'AddEditApply',
|
||||
data() {
|
||||
return {
|
||||
useTimeRange: [], // 主表单的全局日期范围
|
||||
routerParams: {},
|
||||
isLoading: false,
|
||||
showSearch: true,
|
||||
|
|
@ -314,6 +337,7 @@ export default {
|
|||
proCounty: [{ required: true, message: '请选择项目所在区/县', trigger: 'change' }],
|
||||
proLocation: [{ required: true, message: '请输入详细地址', trigger: 'blur' }],
|
||||
useUnit: [{ required: true, message: '请输入需求单位', trigger: 'blur' }],
|
||||
useTimeRange: [{ required: true, message: '请选择使用到期日期', trigger: 'change' }],
|
||||
|
||||
},
|
||||
|
||||
|
|
@ -329,6 +353,7 @@ export default {
|
|||
typeModelName: '', // 规格型号
|
||||
devCode: '', // 设备编码
|
||||
devType: '', // 核心:分类选择(1=装备,2=工具)
|
||||
manageType: '',
|
||||
categoryPath: '', // 装备分类路径(数组)
|
||||
toolCategoryPath: '', // 工具分类路径(数组)
|
||||
pageNum: 1, // 页码
|
||||
|
|
@ -340,7 +365,8 @@ export default {
|
|||
devCode: '',
|
||||
categoryEquipment: '', // 装备分类ID(字符串)
|
||||
toolTypeId: '', // 工具分类ID(字符串)
|
||||
devType: '' // 筛选类型(1=装备,2=工具)
|
||||
devType: '' ,// 筛选类型(1=装备,2=工具)
|
||||
manageType:''
|
||||
},
|
||||
addTotal: 0, // 添加申请列表总条数
|
||||
addList: [], // 添加申请列表数据
|
||||
|
|
@ -371,6 +397,17 @@ export default {
|
|||
this.getEquipmentTree() // 初始化加载装备分类树
|
||||
this.getToolTree() // 初始化加载工具分类树
|
||||
},
|
||||
|
||||
watch: {
|
||||
// 监听主表单日期范围变化,同步更新表格中所有行的时间段
|
||||
'queryParams.useTimeRange'(newVal) {
|
||||
if (newVal && newVal.length === 2 && this.tableList.length > 0) {
|
||||
this.tableList.forEach(item => {
|
||||
item.useTimeRange = [...newVal]; // 同步主表单的日期范围
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 获取使用项目的下拉选
|
||||
async getUseProjectList() {
|
||||
|
|
@ -422,30 +459,47 @@ export default {
|
|||
|
||||
// 获取列表数据
|
||||
async getList(emit = {}) {
|
||||
// 如果从emit传入id,更新查询参数
|
||||
if (emit.id) {
|
||||
this.queryParams.id = emit.id
|
||||
this.$route.query.id = this.queryParams.id
|
||||
this.queryParams.id = emit.id;
|
||||
this.$route.query.id = this.queryParams.id;
|
||||
}
|
||||
this.isLoading = true
|
||||
|
||||
this.isLoading = true;
|
||||
try {
|
||||
const params = { ...this.queryParams }
|
||||
const res = await getApplyDetailsApi(params)
|
||||
this.tableList = res.data.devDetailsList || []
|
||||
if (this.queryParams.id) {
|
||||
// 编辑或查看时,回填表单数据
|
||||
Object.assign(this.queryParams, res.data.devInfo || {})
|
||||
// 确保useTime是Date对象,防止Element UI日期选择器显示异常
|
||||
if (this.queryParams.useTime) {
|
||||
this.queryParams.useTime = new Date(this.queryParams.useTime);
|
||||
const params = { ...this.queryParams };
|
||||
const res = await getApplyDetailsApi(params); // 调用接口获取详情
|
||||
|
||||
// 初始化表格数据(重点处理日期)
|
||||
this.tableList = (res.data.devDetailsList || []).map(item => ({
|
||||
...item,
|
||||
// 将后端返回的 useStartTime/useEndTime 转为 Date 对象数组(适配 el-date-picker)
|
||||
useTimeRange: item.useStartTime && item.useEndTime
|
||||
? [new Date(item.useStartTime), new Date(item.useEndTime)]
|
||||
: [] // 无日期时设为空数组
|
||||
}));
|
||||
|
||||
// 如果是编辑/查看模式,初始化主表单数据
|
||||
if (this.queryParams.id && res.data.devInfo) {
|
||||
Object.assign(this.queryParams, res.data.devInfo);
|
||||
|
||||
// 初始化主表单的全局日期范围(如果后端返回了全局日期)
|
||||
if (res.data.devInfo.useStartTime && res.data.devInfo.useEndTime) {
|
||||
this.queryParams.useTimeRange = [
|
||||
new Date(res.data.devInfo.useStartTime),
|
||||
new Date(res.data.devInfo.useEndTime)
|
||||
];
|
||||
}
|
||||
}
|
||||
this.total = res.data.total || 0
|
||||
|
||||
this.total = res.data.total || 0;
|
||||
} catch (error) {
|
||||
this.tableList = []
|
||||
this.total = 0
|
||||
this.$message.error('获取申请详情失败')
|
||||
this.tableList = [];
|
||||
this.total = 0;
|
||||
this.$message.error('获取申请详情失败');
|
||||
console.error('getList error:', error);
|
||||
} finally {
|
||||
this.isLoading = false
|
||||
this.isLoading = false;
|
||||
}
|
||||
},
|
||||
|
||||
|
|
@ -558,7 +612,8 @@ export default {
|
|||
devCode: queryParams.devCode,
|
||||
categoryEquipment,
|
||||
toolTypeId,
|
||||
devType // 关键:将devType传递给后端筛选
|
||||
devType, // 关键:将devType传递给后端筛选
|
||||
manageType: queryParams.manageType // 关键:将manageType传递给后端筛选
|
||||
};
|
||||
|
||||
// 调用分页查询方法
|
||||
|
|
@ -624,7 +679,7 @@ export default {
|
|||
manageType: item.manageType,
|
||||
devCode: item.devCode,
|
||||
storageNum: item.storageNum,
|
||||
num: item.manageType == 0 ? 1 : item.num, // 编码设备默认1,数量设备取输入值
|
||||
num: item.manageType == 0 ? 1 : item.storageNum, // 编码设备默认1,数量设备取输入值
|
||||
useTime: this.queryParams.useTime ? new Date(this.queryParams.useTime) : null // 默认为主表单的使用日期
|
||||
})
|
||||
})
|
||||
|
|
@ -663,26 +718,30 @@ export default {
|
|||
// 确认添加(将勾选的数据添加到主表格)
|
||||
saveAdd() {
|
||||
if (!this.ids.length) {
|
||||
this.$message({
|
||||
type: 'error',
|
||||
message: '请勾选要添加的数据'
|
||||
})
|
||||
this.$message.error('请勾选要添加的数据')
|
||||
return
|
||||
}
|
||||
|
||||
// 检查是否有数量设备未填写数量
|
||||
const invalidItem = this.addTempList.find(item => item.manageType === 1 && (item.num === 0 || !item.num));
|
||||
const itemsToAdd = this.addList.filter(item => this.ids.includes(item.id))
|
||||
const invalidItem = itemsToAdd.find(item => item.manageType === 1 && (item.num === 0 || !item.num))
|
||||
if (invalidItem) {
|
||||
this.$message.error('请为数量管理的设备填写申请数量。');
|
||||
return;
|
||||
this.$message.error('请为数量管理的设备填写申请数量。')
|
||||
return
|
||||
}
|
||||
|
||||
this.addTempList.forEach(item => {
|
||||
this.tableList.push(item) // 数据包含devType字段
|
||||
// 关键修改:新增设备时,初始化 useTimeRange 为 Date 对象数组
|
||||
itemsToAdd.forEach(item => {
|
||||
this.tableList.push({
|
||||
...item,
|
||||
// 逻辑:主表单有日期则用主表单日期,无则为空数组
|
||||
useTimeRange: this.queryParams.useTime
|
||||
? [new Date(this.queryParams.useTime), new Date(this.queryParams.useTime)]
|
||||
: []
|
||||
})
|
||||
})
|
||||
|
||||
// 清除勾选状态
|
||||
this.ids = []
|
||||
this.addTempList = []
|
||||
if (this.$refs.addTable) {
|
||||
this.$refs.addTable.clearSelection()
|
||||
}
|
||||
|
|
@ -692,67 +751,94 @@ export default {
|
|||
// 提交申请(新增/编辑,devType随数据传递)
|
||||
// 提交
|
||||
async submit() {
|
||||
this.$refs.queryForm.validate(async(valid) => {
|
||||
if (valid) {
|
||||
this.$confirm('是否确定提交申请?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(async() => {
|
||||
this.isLoading = true
|
||||
try {
|
||||
//新增
|
||||
if (!this.routerParams.id) {
|
||||
this.queryParams.type = 2
|
||||
this.queryParams.leaseType = 0
|
||||
const tempTableList = this.tableList.map(item => ({
|
||||
...item,
|
||||
category: null
|
||||
}))
|
||||
const params = {
|
||||
devInfo: this.queryParams,
|
||||
devDetailsList: tempTableList
|
||||
}
|
||||
const res = await addApplyApi(params)
|
||||
if (res.code == 200) {
|
||||
this.$message({
|
||||
type: 'success',
|
||||
message: '添加成功!'
|
||||
})
|
||||
this.$router.go(-1)
|
||||
// this.$tab.closeOpenPage({ path: '/business/applyList' })
|
||||
}
|
||||
} else if (this.routerParams.id) {
|
||||
// 修改
|
||||
this.queryParams.type = 2
|
||||
this.queryParams.leaseType = 0
|
||||
const tempTableList = this.tableList.map(item => ({
|
||||
...item,
|
||||
category: null
|
||||
}))
|
||||
const params = {
|
||||
devInfo: this.queryParams,
|
||||
devDetailsList: tempTableList
|
||||
}
|
||||
const res = await editApplyApi(params)
|
||||
if (res.code == 200) {
|
||||
this.$message({
|
||||
type: 'success',
|
||||
message: '修改成功!'
|
||||
})
|
||||
this.$router.go(-1)
|
||||
// this.$tab.closeOpenPage({ path: '/business/applyList' })
|
||||
}
|
||||
this.$refs.queryForm.validate(async (valid) => {
|
||||
if (!valid) return;
|
||||
|
||||
this.$confirm('是否确定提交申请?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(async () => {
|
||||
this.isLoading = true;
|
||||
try {
|
||||
// --- 修改开始:健壮的日期格式化函数 ---
|
||||
const safeFormatDate = (dateInput) => {
|
||||
// 1. 检查输入是否为 null 或 undefined
|
||||
if (!dateInput) {
|
||||
console.warn('尝试格式化一个空的日期值');
|
||||
return ''; // 或根据业务返回 '1970-01-01' 等默认值
|
||||
}
|
||||
|
||||
} catch (error) {
|
||||
console.log('🚀 ~ error:', error)
|
||||
} finally {
|
||||
this.isLoading = false
|
||||
// 2. 确保输入是一个 Date 对象
|
||||
let date;
|
||||
if (dateInput instanceof Date) {
|
||||
date = dateInput;
|
||||
} else {
|
||||
// 如果是字符串,尝试将其转换为 Date 对象
|
||||
date = new Date(dateInput);
|
||||
}
|
||||
|
||||
// 3. 检查 Date 对象是否有效
|
||||
if (isNaN(date.getTime())) {
|
||||
console.error('无效的日期值:', dateInput);
|
||||
return ''; // 或抛出错误
|
||||
}
|
||||
|
||||
// 4. 执行格式化
|
||||
const year = date.getFullYear();
|
||||
const month = (date.getMonth() + 1).toString().padStart(2, '0');
|
||||
const day = date.getDate().toString().padStart(2, '0');
|
||||
return `${year}-${month}-${day}`;
|
||||
};
|
||||
// --- 修改结束 ---
|
||||
|
||||
// 1. 处理主表单的日期范围
|
||||
const devInfo = { ...this.queryParams };
|
||||
if (devInfo.useTimeRange && devInfo.useTimeRange.length === 2) {
|
||||
// 使用健壮的格式化函数
|
||||
devInfo.useStartTime = safeFormatDate(devInfo.useTimeRange[0]);
|
||||
devInfo.useEndTime = safeFormatDate(devInfo.useTimeRange[1]);
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
delete devInfo.useTimeRange;
|
||||
|
||||
// 2. 处理表格数据的日期
|
||||
const tempTableList = this.tableList.map(item => ({
|
||||
...item,
|
||||
category: null,
|
||||
// 使用健壮的格式化函数
|
||||
useStartTime: safeFormatDate(item.useTimeRange[0]),
|
||||
useEndTime: safeFormatDate(item.useTimeRange[1]),
|
||||
useTimeRange: undefined,
|
||||
useTime: undefined
|
||||
}));
|
||||
|
||||
const params = {
|
||||
devInfo,
|
||||
devDetailsList: tempTableList
|
||||
};
|
||||
|
||||
// ... 后续提交逻辑 ...
|
||||
let res;
|
||||
if (!this.routerParams.id) {
|
||||
res = await addApplyApi(params);
|
||||
} else {
|
||||
res = await editApplyApi(params);
|
||||
}
|
||||
|
||||
if (res.code === 200) {
|
||||
this.$message.success(res.message || '操作成功!');
|
||||
this.$router.go(-1);
|
||||
} else {
|
||||
this.$message.error(res.message || '操作失败!');
|
||||
}
|
||||
} catch (error) {
|
||||
this.$message.error('提交申请异常,请稍后重试');
|
||||
console.error('submit error:', error);
|
||||
} finally {
|
||||
this.isLoading = false;
|
||||
}
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
// 处理分类树数据(适配六级分类)
|
||||
|
|
|
|||
|
|
@ -48,6 +48,8 @@
|
|||
/>
|
||||
</el-form-item>
|
||||
|
||||
|
||||
|
||||
<!-- 表单按钮 -->
|
||||
<el-form-item style="float: right">
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">查询</el-button>
|
||||
|
|
|
|||
|
|
@ -75,7 +75,16 @@
|
|||
<el-table-column label="设备编码" align="center" prop="devCode" :show-overflow-tooltip="true" width="140px"/>
|
||||
<el-table-column label="当前库存" align="center" prop="storageNum" :show-overflow-tooltip="true" />
|
||||
<el-table-column label="申请数量" align="center" prop="num" :show-overflow-tooltip="true" />
|
||||
<el-table-column label="使用到期日期" align="center" prop="useTime" width="160px"/>
|
||||
<el-table-column label="使用到期日期" align="center" width="250px" :show-overflow-tooltip="true">
|
||||
<template slot-scope="scope">
|
||||
<!-- 处理日期为 null/undefined 的情况,显示占位符;有值则拼接为 "开始日期 至 结束日期" 格式 -->
|
||||
{{
|
||||
scope.row.useStartTime && scope.row.useEndTime
|
||||
? `${scope.row.useStartTime} 至 ${scope.row.useEndTime}`
|
||||
: '暂无时间段'
|
||||
}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-card>
|
||||
|
||||
|
|
|
|||
|
|
@ -160,7 +160,18 @@
|
|||
<el-table-column label="当前库存" align="center" prop="storageNum" :show-overflow-tooltip="true"/>
|
||||
<el-table-column label="申请数量" align="center" prop="num" :show-overflow-tooltip="true"/>
|
||||
<el-table-column label="已出库数量" align="center" prop="realNum" :show-overflow-tooltip="true"/>
|
||||
<el-table-column label="使用到期日期" align="center" prop="useTime" width="160px"/>
|
||||
<el-table-column label="使用到期日期" align="center" width="250px" :show-overflow-tooltip="true">
|
||||
<template slot-scope="scope">
|
||||
<!-- 处理日期为 null/undefined 的情况,显示占位符;有值则拼接为 "开始日期 至 结束日期" 格式 -->
|
||||
{{
|
||||
scope.row.useStartTime && scope.row.useEndTime
|
||||
? `${scope.row.useStartTime} 至 ${scope.row.useEndTime}`
|
||||
: '暂无时间段'
|
||||
}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
|
||||
<el-table-column label="出库数量" v-if="routerParams.isView" align="center" prop="outNum"
|
||||
:show-overflow-tooltip="true"
|
||||
>
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@
|
|||
<el-table-column label="设备编码" align="center" prop="devCode" :show-overflow-tooltip="true" width="140px"/>
|
||||
<el-table-column label="当前自用" align="center" prop="useNum" :show-overflow-tooltip="true"/>
|
||||
<el-table-column label="退库数量" align="center" prop="num" :show-overflow-tooltip="true"/>
|
||||
<el-table-column label="使用到期日期" align="center" prop="useTime" width="160px"/>
|
||||
<el-table-column label="退库日期" align="center" prop="useTime" width="160px"/>
|
||||
<el-table-column label="是否维修" align="center" prop="isRepair" width="160px">
|
||||
<template slot-scope="scope">
|
||||
<el-tag v-if="scope.row.isRepair == '0'" type="warning">否</el-tag>
|
||||
|
|
|
|||
|
|
@ -54,19 +54,19 @@
|
|||
<el-input style="width: 200px" disabled v-model="queryParams.proCounty"/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="使用日期" prop="useTime">
|
||||
<el-date-picker
|
||||
v-model="queryParams.useTime"
|
||||
:disabled="!routerParams.isEdit"
|
||||
style="width: 200px"
|
||||
type="date"
|
||||
format="yyyy-MM-dd"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="选择日期"
|
||||
@change="useTimeChange"
|
||||
>
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="退库日期" prop="useTime">-->
|
||||
<!-- <el-date-picker-->
|
||||
<!-- v-model="queryParams.useTime"-->
|
||||
<!-- :disabled="!routerParams.isEdit"-->
|
||||
<!-- style="width: 200px"-->
|
||||
<!-- type="date"-->
|
||||
<!-- format="yyyy-MM-dd"-->
|
||||
<!-- value-format="yyyy-MM-dd"-->
|
||||
<!-- placeholder="选择日期"-->
|
||||
<!-- @change="useTimeChange"-->
|
||||
<!-- >-->
|
||||
<!-- </el-date-picker>-->
|
||||
<!-- </el-form-item>-->
|
||||
</el-form>
|
||||
|
||||
</el-card>
|
||||
|
|
@ -74,7 +74,7 @@
|
|||
<el-card>
|
||||
<el-row :gutter="10" class="mb8" justify="end">
|
||||
<el-col :span="4">
|
||||
<span style="font-size: 20px; font-weight: 800">退库申请列表</span>
|
||||
<span style="font-size: 20px; font-weight: 800">退库申请设备</span>
|
||||
</el-col>
|
||||
<el-col v-if="!routerParams.isView" :span="20" style="display: flex; justify-content: flex-end">
|
||||
<el-button type="primary" @click="submit">确定申请</el-button>
|
||||
|
|
@ -125,7 +125,7 @@
|
|||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="使用到期日期" align="center" prop="useTime" width="160px">
|
||||
<el-table-column label="退库日期" align="center" prop="useTime" width="160px">
|
||||
<template slot-scope="scope">
|
||||
<el-date-picker
|
||||
:disabled="!routerParams.isEdit"
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<template>
|
||||
<el-dialog
|
||||
title="选择编码工具"
|
||||
title="添加申请"
|
||||
:visible.sync="visible"
|
||||
width="70%"
|
||||
@close="handleClose"
|
||||
|
|
@ -39,6 +39,23 @@
|
|||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
|
||||
<!-- 新增:动态显示的管理模式下拉框 -->
|
||||
<el-form-item
|
||||
v-if="queryParams.devType === '2'"
|
||||
label="管理模式"
|
||||
prop="manageType"
|
||||
>
|
||||
<el-select
|
||||
v-model="queryParams.manageType"
|
||||
placeholder="请选择管理模式"
|
||||
clearable
|
||||
>
|
||||
<el-option label="编码设备" value="0"/>
|
||||
<el-option label="数量设备" value="1"/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<!-- <!– 装备分类级联选择器(最多六级) –>-->
|
||||
<!-- <el-form-item label="装备分类" v-if="queryParams.devType === '1'">-->
|
||||
<!-- <el-cascader-->
|
||||
|
|
@ -156,7 +173,8 @@ export default {
|
|||
toolCategoryPath: [], // 工具分类级联路径
|
||||
categoryEquipment: '', // 装备分类ID(传给接口)
|
||||
toolTypeId: '', // 工具分类ID(传给接口)
|
||||
devType: '' // 1=装备,2=工具(新增)
|
||||
devType: '', // 1=装备,2=工具(新增)
|
||||
manageType:''
|
||||
},
|
||||
|
||||
externalSelectedRows: [],
|
||||
|
|
@ -332,7 +350,8 @@ export default {
|
|||
code: this.queryParams.code,
|
||||
categoryEquipment: this.queryParams.categoryEquipment,
|
||||
toolTypeId: this.queryParams.toolTypeId,
|
||||
devType: this.queryParams.devType // 传递分类类型给后端
|
||||
devType: this.queryParams.devType, // 传递分类类型给后端
|
||||
manageType: this.queryParams.manageType
|
||||
}
|
||||
const res = await getToBeRepairList(queryParams)
|
||||
const rows = res.data || []
|
||||
|
|
@ -396,7 +415,8 @@ export default {
|
|||
toolCategoryPath: [],
|
||||
categoryEquipment: '',
|
||||
toolTypeId: '',
|
||||
devType: '' // 重置分类选择
|
||||
devType: '', // 重置分类选择
|
||||
manageType: ''
|
||||
}
|
||||
this.getList()
|
||||
},
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
<el-card>
|
||||
<el-row class="mb8" :gutter="10" justify="end">
|
||||
<el-col :span="4">
|
||||
<span style="font-size: 20px; font-weight: 800">维修申请列表</span>
|
||||
<span style="font-size: 20px; font-weight: 800">维修申请设备</span>
|
||||
</el-col>
|
||||
<el-col v-if="!routerParams.isView" :span="20" style="display: flex; justify-content: flex-end">
|
||||
<el-button type="primary" @click="handleNumDialog">添加</el-button>
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@
|
|||
|
||||
<el-table
|
||||
v-loading="isLoading"
|
||||
:data="tableList"
|
||||
:data="formattedTableList"
|
||||
highlight-current-row
|
||||
border
|
||||
stripe
|
||||
|
|
@ -77,6 +77,15 @@
|
|||
align="center"
|
||||
>
|
||||
</el-table-column>
|
||||
<!-- 手动添加状态列 -->
|
||||
<el-table-column label="任务状态" align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-tag :type="getStatusType(scope.row.status)">
|
||||
{{ getStatusLabel(scope.row.status) }}
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="操作" align="center">
|
||||
<template slot-scope="{ row }">
|
||||
<el-button size="mini" type="text" icon="el-icon-zoom-in" @click="handleView(row)">查看</el-button>
|
||||
|
|
@ -126,13 +135,21 @@ export default {
|
|||
{ label: '全部通过', value: '全部通过' },
|
||||
{ label: '全部驳回', value: '全部驳回' },
|
||||
],
|
||||
statusTextMap: {
|
||||
'1': '待审核',
|
||||
'4': '审核中',
|
||||
'5': '驳回待处理',
|
||||
'2': '全部通过',
|
||||
'3': '全部驳回',
|
||||
|
||||
},
|
||||
total: 0, // 总条数
|
||||
// 表头
|
||||
tableColumns: [
|
||||
{ label: '维修单号', prop: 'code' },
|
||||
{ label: '维修装备数', prop: 'equipmentNum' },
|
||||
{ label: '维修工具数', prop: 'toolNum' },
|
||||
{ label: '任务状态', prop: 'status' },
|
||||
// { label: '任务状态', prop: 'status' },
|
||||
{ label: '申请人', prop: 'createUser' },
|
||||
{ label: '申请时间', prop: 'createTime' },
|
||||
],
|
||||
|
|
@ -143,7 +160,47 @@ export default {
|
|||
created() {
|
||||
this.getList()
|
||||
},
|
||||
computed: {
|
||||
// 格式化后的表格数据
|
||||
formattedTableList() {
|
||||
// 使用 map 创建一个新数组,避免直接修改原数据
|
||||
return this.tableList.map(item => {
|
||||
// 返回一个新对象
|
||||
return {
|
||||
...item, // 拷贝 item 的所有属性
|
||||
// 重写 status 属性
|
||||
status: this.statusTextMap[item.status] || '未知状态'
|
||||
};
|
||||
});
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
||||
// 根据状态值获取显示的文本
|
||||
getStatusLabel(status) {
|
||||
const statusMap = {
|
||||
'待审核': '待审核',
|
||||
'审核中': '审核中',
|
||||
'驳回待处理': '驳回待处理',
|
||||
'全部通过': '已通过',
|
||||
'全部驳回': '已驳回',
|
||||
};
|
||||
return statusMap[status] || '未知状态';
|
||||
},
|
||||
|
||||
// 根据状态值获取 el-tag 的类型 (color)
|
||||
getStatusType(status) {
|
||||
const typeMap = {
|
||||
'待审核': 'warning', // 黄色
|
||||
'审核中': 'warning', // 蓝色
|
||||
'驳回待处理': 'danger', // 红色
|
||||
'全部通过': 'success', // 绿色
|
||||
'全部驳回': 'danger', // 红色
|
||||
};
|
||||
return typeMap[status] || 'info'; // 默认蓝色
|
||||
},
|
||||
|
||||
|
||||
// 查询
|
||||
handleQuery() {
|
||||
this.queryParams.pageNum = 1
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@
|
|||
|
||||
<el-table
|
||||
v-loading="isLoading"
|
||||
:data="tableList"
|
||||
:data="formattedTableList"
|
||||
highlight-current-row
|
||||
border
|
||||
stripe
|
||||
|
|
@ -74,6 +74,14 @@
|
|||
align="center"
|
||||
>
|
||||
</el-table-column>
|
||||
<!-- 手动添加状态列 -->
|
||||
<el-table-column label="任务状态" align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-tag :type="getStatusType(scope.row.status)">
|
||||
{{ getStatusLabel(scope.row.status) }}
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center">
|
||||
<template slot-scope="{ row }">
|
||||
<el-button size="mini" type="text" icon="el-icon-zoom-in" @click="handleView(row)">查看</el-button>
|
||||
|
|
@ -120,13 +128,21 @@ export default {
|
|||
{ label: '全部通过', value: '全部通过' },
|
||||
{ label: '全部驳回', value: '全部驳回' },
|
||||
],
|
||||
statusTextMap: {
|
||||
'1': '待审核',
|
||||
'4': '审核中',
|
||||
'5': '驳回待处理',
|
||||
'2': '全部通过',
|
||||
'3': '全部驳回',
|
||||
|
||||
},
|
||||
total: 0, // 总条数
|
||||
// 表头
|
||||
tableColumns: [
|
||||
{ label: '维修单号', prop: 'code' },
|
||||
{ label: '维修装备数', prop: 'equipmentNum' },
|
||||
{ label: '维修工具数', prop: 'toolNum' },
|
||||
{ label: '任务状态', prop: 'status' },
|
||||
//{ label: '任务状态', prop: 'status' },
|
||||
{ label: '申请人', prop: 'createUser' },
|
||||
{ label: '申请时间', prop: 'createTime' },
|
||||
],
|
||||
|
|
@ -137,7 +153,46 @@ export default {
|
|||
created() {
|
||||
this.getList()
|
||||
},
|
||||
computed: {
|
||||
// 格式化后的表格数据
|
||||
formattedTableList() {
|
||||
// 使用 map 创建一个新数组,避免直接修改原数据
|
||||
return this.tableList.map(item => {
|
||||
// 返回一个新对象
|
||||
return {
|
||||
...item, // 拷贝 item 的所有属性
|
||||
// 重写 status 属性
|
||||
status: this.statusTextMap[item.status] || '未知状态'
|
||||
};
|
||||
});
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
||||
// 根据状态值获取显示的文本
|
||||
getStatusLabel(status) {
|
||||
const statusMap = {
|
||||
'待审核': '待审核',
|
||||
'审核中': '审核中',
|
||||
'驳回待处理': '驳回待处理',
|
||||
'全部通过': '已通过',
|
||||
'全部驳回': '已驳回',
|
||||
};
|
||||
return statusMap[status] || '未知状态';
|
||||
},
|
||||
|
||||
// 根据状态值获取 el-tag 的类型 (color)
|
||||
getStatusType(status) {
|
||||
const typeMap = {
|
||||
'待审核': 'warning', // 黄色
|
||||
'审核中': 'warning', // 蓝色
|
||||
'驳回待处理': 'danger', // 红色
|
||||
'全部通过': 'success', // 绿色
|
||||
'全部驳回': 'danger', // 红色
|
||||
};
|
||||
return typeMap[status] || 'info'; // 默认蓝色
|
||||
},
|
||||
|
||||
// 查询
|
||||
handleQuery() {
|
||||
this.queryParams.pageNum = 1
|
||||
|
|
|
|||
Loading…
Reference in New Issue