代码提交
This commit is contained in:
parent
b7ea784983
commit
c1a9c1ba7d
|
|
@ -82,11 +82,11 @@
|
||||||
/>
|
/>
|
||||||
</el-form-item>-->
|
</el-form-item>-->
|
||||||
|
|
||||||
<el-form-item prop="minBuyPrice" label="资产原值(万元)">
|
<el-form-item prop="minOriginalValue" label="资产原值(万元)">
|
||||||
<el-input clearable style="width: 95px" placeholder="请输入" v-model.trim="queryParams.minBuyPrice" />
|
<el-input clearable style="width: 95px" placeholder="请输入" @input="handleNumberInput('minOriginalValue')" v-model.trim="queryParams.minOriginalValue" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item prop="maxBuyPrice" label="-" style="margin-left: -6%">
|
<el-form-item prop="maxOriginalValue" label="-" style="margin-left: -6%">
|
||||||
<el-input clearable style="width: 95px" placeholder="请输入" v-model.trim="queryParams.maxBuyPrice" />
|
<el-input clearable style="width: 95px" placeholder="请输入" @input="handleNumberInput('maxOriginalValue')" v-model.trim="queryParams.maxOriginalValue" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item style="float: right">
|
<el-form-item style="float: right">
|
||||||
|
|
@ -726,12 +726,17 @@ export default {
|
||||||
originalCode: '',
|
originalCode: '',
|
||||||
manufacturerId: '',
|
manufacturerId: '',
|
||||||
productionDate: '',
|
productionDate: '',
|
||||||
minBuyPrice: '',
|
minOriginalValue: '',
|
||||||
maxBuyPrice: '',
|
maxOriginalValue: '',
|
||||||
|
|
||||||
pageNum: 1,
|
pageNum: 1,
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
},
|
},
|
||||||
|
// 用于存储上一次的有效值,避免循环验证
|
||||||
|
lastValidValues: {
|
||||||
|
minOriginalValue: '',
|
||||||
|
maxOriginalValue: ''
|
||||||
|
},
|
||||||
currentRow: null,
|
currentRow: null,
|
||||||
uploadType: 1, // 1:装备外观,2:合格证,3:定期检验报告,4:采购发票
|
uploadType: 1, // 1:装备外观,2:合格证,3:定期检验报告,4:采购发票
|
||||||
uploadVisible: false,
|
uploadVisible: false,
|
||||||
|
|
@ -788,6 +793,117 @@ export default {
|
||||||
this.getManufacturerSelectList()
|
this.getManufacturerSelectList()
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
handleNumberInput(key) {
|
||||||
|
let value = this.queryParams[key] || ''
|
||||||
|
// 1. 清理输入
|
||||||
|
const cleanedValue = this.cleanNumberInput(value)
|
||||||
|
|
||||||
|
// 2. 存储为上次有效值(清理后)
|
||||||
|
this.lastValidValues[key] = cleanedValue
|
||||||
|
|
||||||
|
// 3. 根据输入类型进行验证
|
||||||
|
if (key === 'minOriginalValue') {
|
||||||
|
this.queryParams[key] = this.validateMinValue(cleanedValue)
|
||||||
|
} else if (key === 'maxOriginalValue') {
|
||||||
|
this.queryParams[key] = this.validateMaxValue(cleanedValue)
|
||||||
|
} else {
|
||||||
|
this.queryParams[key] = cleanedValue
|
||||||
|
}
|
||||||
|
|
||||||
|
// 4. 确保响应式更新
|
||||||
|
this.$forceUpdate()
|
||||||
|
},
|
||||||
|
|
||||||
|
// 清理数字输入
|
||||||
|
cleanNumberInput(input) {
|
||||||
|
if (!input) return ''
|
||||||
|
|
||||||
|
// 过滤非数字和小数点
|
||||||
|
let cleaned = input.replace(/[^\d.]/g, '')
|
||||||
|
|
||||||
|
// 处理多个小数点
|
||||||
|
const dotIndex = cleaned.indexOf('.')
|
||||||
|
if (dotIndex !== -1) {
|
||||||
|
const before = cleaned.substring(0, dotIndex + 1)
|
||||||
|
const after = cleaned.substring(dotIndex + 1).replace(/\./g, '')
|
||||||
|
cleaned = before + after
|
||||||
|
}
|
||||||
|
|
||||||
|
// 限制小数位数
|
||||||
|
const parts = cleaned.split('.')
|
||||||
|
if (parts.length > 1) {
|
||||||
|
cleaned = parts[0] + '.' + parts[1].slice(0, 2)
|
||||||
|
}
|
||||||
|
|
||||||
|
return cleaned
|
||||||
|
},
|
||||||
|
|
||||||
|
// 验证最小值(不能大于最大值)
|
||||||
|
validateMinValue(value) {
|
||||||
|
// 如果是空值或纯小数点,直接返回
|
||||||
|
if (!value || value === '.') return value
|
||||||
|
|
||||||
|
const maxValue = this.queryParams.maxOriginalValue
|
||||||
|
const minNum = this.safeParseNumber(value)
|
||||||
|
const maxNum = this.safeParseNumber(maxValue)
|
||||||
|
|
||||||
|
// 如果最大值无效,直接返回清理后的值
|
||||||
|
if (maxNum === null) return value
|
||||||
|
|
||||||
|
// 如果最小值大于最大值,则使用最大值
|
||||||
|
if (minNum !== null && minNum > maxNum) {
|
||||||
|
return maxValue
|
||||||
|
}
|
||||||
|
|
||||||
|
return value
|
||||||
|
},
|
||||||
|
|
||||||
|
// 验证最大值(不能小于最小值)
|
||||||
|
validateMaxValue(value) {
|
||||||
|
// 如果是空值或纯小数点,直接返回
|
||||||
|
if (!value || value === '.') return value
|
||||||
|
|
||||||
|
const minValue = this.queryParams.minOriginalValue
|
||||||
|
const maxNum = this.safeParseNumber(value)
|
||||||
|
const minNum = this.safeParseNumber(minValue)
|
||||||
|
|
||||||
|
// 如果最小值无效,直接返回清理后的值
|
||||||
|
if (minNum === null) return value
|
||||||
|
|
||||||
|
// 如果最大值小于最小值,则使用最小值
|
||||||
|
if (maxNum !== null && maxNum < minNum) {
|
||||||
|
return minValue
|
||||||
|
}
|
||||||
|
|
||||||
|
return value
|
||||||
|
},
|
||||||
|
|
||||||
|
// 安全解析数字
|
||||||
|
safeParseNumber(str) {
|
||||||
|
if (!str || str === '.' || isNaN(Number(str))) {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
return Number(str)
|
||||||
|
},
|
||||||
|
|
||||||
|
// 同时验证两个值(在表单提交前调用)
|
||||||
|
validateNumberRange() {
|
||||||
|
const minNum = this.safeParseNumber(this.queryParams.minOriginalValue)
|
||||||
|
const maxNum = this.safeParseNumber(this.queryParams.maxOriginalValue)
|
||||||
|
|
||||||
|
if (minNum !== null && maxNum !== null && minNum > maxNum) {
|
||||||
|
// 交换值,使最小值 <= 最大值
|
||||||
|
const temp = this.queryParams.minOriginalValue
|
||||||
|
this.queryParams.minOriginalValue = this.queryParams.maxOriginalValue
|
||||||
|
this.queryParams.maxOriginalValue = temp
|
||||||
|
|
||||||
|
// 提示用户
|
||||||
|
this.$message.warning('已自动调整数值范围,确保最小值 ≤ 最大值')
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
|
},
|
||||||
// 文件上传中处理
|
// 文件上传中处理
|
||||||
handleFileUploadProgress(event, file, fileList) {
|
handleFileUploadProgress(event, file, fileList) {
|
||||||
this.upload.isUploading = true
|
this.upload.isUploading = true
|
||||||
|
|
@ -895,6 +1011,7 @@ export default {
|
||||||
|
|
||||||
// 查询表格数据
|
// 查询表格数据
|
||||||
queryTableList() {
|
queryTableList() {
|
||||||
|
this.validateNumberRange()
|
||||||
this.queryParams.pageNum = 1
|
this.queryParams.pageNum = 1
|
||||||
this.getList()
|
this.getList()
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -9,144 +9,148 @@
|
||||||
>
|
>
|
||||||
<!-- 表单搜索 -->
|
<!-- 表单搜索 -->
|
||||||
<el-card class="search-box">
|
<el-card class="search-box">
|
||||||
<el-row>
|
|
||||||
<el-form-item prop="orderCreateUser" label="申请人">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
style="width: 240px"
|
|
||||||
placeholder="请输入内容"
|
|
||||||
v-model.trim="queryParams.orderCreateUser"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="申请时间" prop="orderCreateTime">
|
|
||||||
<el-date-picker
|
|
||||||
type="daterange"
|
|
||||||
style="width: 240px"
|
|
||||||
unlink-panels
|
|
||||||
range-separator="至"
|
|
||||||
start-placeholder="开始日期"
|
|
||||||
end-placeholder="结束日期"
|
|
||||||
value-format="yyyy-MM-dd"
|
|
||||||
v-model="queryParams.orderCreateTime"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
|
|
||||||
<el-form-item label="审批状态" prop="entryStatus">
|
|
||||||
<el-select
|
|
||||||
style="width: 240px"
|
|
||||||
placeholder="请选择审批状态"
|
|
||||||
v-model="queryParams.entryStatus"
|
|
||||||
>
|
|
||||||
<el-option label="待审批" value="0"/>
|
|
||||||
<el-option label="已通过" value="1"/>
|
|
||||||
<el-option label="已驳回" value="2"/>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
|
|
||||||
<el-form-item prop="name" label="装备名称">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
style="width: 240px"
|
|
||||||
placeholder="请输入内容"
|
|
||||||
v-model.trim="queryParams.name"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
|
|
||||||
<el-form-item prop="specificationModel" label="规格型号">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
style="width: 240px"
|
|
||||||
placeholder="请输入内容"
|
|
||||||
v-model.trim="queryParams.specificationModel"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
|
|
||||||
<el-form-item prop="originalCode" label="装备原始编码">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
style="width: 240px"
|
|
||||||
placeholder="请输入内容"
|
|
||||||
v-model.trim="queryParams.originalCode"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
|
|
||||||
<el-form-item prop="manufacturerId" label="生产厂家">
|
|
||||||
<el-select
|
|
||||||
v-model="queryParams.manufacturerId"
|
|
||||||
placeholder="请选择生产厂家"
|
|
||||||
clearable
|
|
||||||
style="width: 240px"
|
|
||||||
>
|
|
||||||
<el-option
|
|
||||||
v-for="item in manufacturerList"
|
|
||||||
:key="item.id"
|
|
||||||
:label="item.label"
|
|
||||||
:value="item.id"
|
|
||||||
/>
|
|
||||||
</el-select>
|
|
||||||
</el-form-item>
|
|
||||||
|
|
||||||
<el-form-item prop="productionDate" label="出厂日期">
|
|
||||||
<el-date-picker
|
|
||||||
type="daterange"
|
|
||||||
style="width: 240px"
|
|
||||||
unlink-panels
|
|
||||||
range-separator="至"
|
|
||||||
start-placeholder="开始日期"
|
|
||||||
end-placeholder="结束日期"
|
|
||||||
value-format="yyyy-MM-dd"
|
|
||||||
v-model="queryParams.productionDate"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
|
|
||||||
<!-- <el-form-item prop="keyword" label="采购日期">
|
|
||||||
<el-date-picker
|
|
||||||
type="date"
|
|
||||||
style="width: 240px"
|
|
||||||
value-format="YYYY-MM-DD"
|
|
||||||
placeholder="请选择采购日期"
|
|
||||||
v-model="queryParams.applyTime"
|
|
||||||
/>
|
|
||||||
</el-form-item>-->
|
|
||||||
|
|
||||||
<!-- <el-col :span="6"> -->
|
|
||||||
<el-form-item prop="originalValue" label="资产原值(万元)">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
style="width: 103px"
|
|
||||||
placeholder="请输入"
|
|
||||||
v-model.trim="queryParams.minOriginalValue"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<span style="line-height: 30px;margin: 0 10px 0 0px;"> - </span>
|
|
||||||
<el-form-item prop="maxOriginalValue">
|
|
||||||
<el-input
|
|
||||||
clearable
|
|
||||||
style="width: 103px"
|
|
||||||
placeholder="请输入"
|
|
||||||
v-model.trim="queryParams.maxOriginalValue"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<!-- </el-col> -->
|
|
||||||
|
|
||||||
|
|
||||||
<!-- <el-col :span="18" style="text-align: right;"> -->
|
|
||||||
<el-form-item style="display: flex; justify-content: flex-end">
|
|
||||||
<el-button class="primary-lease" size="mini" type="primary" icon="el-icon-search" @click="getEquipmentApplyList">
|
|
||||||
查询
|
|
||||||
</el-button>
|
|
||||||
<el-button class="primary-lease" size="mini" icon="el-icon-refresh" @click="resetForm">
|
|
||||||
重置
|
|
||||||
</el-button>
|
|
||||||
</el-form-item>
|
|
||||||
<!-- </el-col> -->
|
|
||||||
</el-row>
|
|
||||||
</el-card>
|
|
||||||
</el-form>
|
|
||||||
<el-card class="content-box">
|
|
||||||
<el-row>
|
<el-row>
|
||||||
<el-col :span="24" style="text-align: right;">
|
<el-form-item prop="orderCreateUser" label="申请人">
|
||||||
<el-button
|
<el-input
|
||||||
|
clearable
|
||||||
|
style="width: 240px"
|
||||||
|
placeholder="请输入内容"
|
||||||
|
v-model.trim="queryParams.orderCreateUser"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="申请时间" prop="orderCreateTime">
|
||||||
|
<el-date-picker
|
||||||
|
type="daterange"
|
||||||
|
style="width: 240px"
|
||||||
|
unlink-panels
|
||||||
|
range-separator="至"
|
||||||
|
start-placeholder="开始日期"
|
||||||
|
end-placeholder="结束日期"
|
||||||
|
value-format="yyyy-MM-dd"
|
||||||
|
v-model="queryParams.orderCreateTime"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="审批状态" prop="entryStatus">
|
||||||
|
<el-select
|
||||||
|
style="width: 240px"
|
||||||
|
placeholder="请选择审批状态"
|
||||||
|
v-model="queryParams.entryStatus"
|
||||||
|
>
|
||||||
|
<el-option label="待审批" value="0"/>
|
||||||
|
<el-option label="已通过" value="1"/>
|
||||||
|
<el-option label="已驳回" value="2"/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item prop="name" label="装备名称">
|
||||||
|
<el-input
|
||||||
|
clearable
|
||||||
|
style="width: 240px"
|
||||||
|
placeholder="请输入内容"
|
||||||
|
v-model.trim="queryParams.name"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item prop="specificationModel" label="规格型号">
|
||||||
|
<el-input
|
||||||
|
clearable
|
||||||
|
style="width: 240px"
|
||||||
|
placeholder="请输入内容"
|
||||||
|
v-model.trim="queryParams.specificationModel"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item prop="originalCode" label="装备原始编码">
|
||||||
|
<el-input
|
||||||
|
clearable
|
||||||
|
style="width: 240px"
|
||||||
|
placeholder="请输入内容"
|
||||||
|
v-model.trim="queryParams.originalCode"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item prop="manufacturerId" label="生产厂家">
|
||||||
|
<el-select
|
||||||
|
v-model="queryParams.manufacturerId"
|
||||||
|
placeholder="请选择生产厂家"
|
||||||
|
clearable
|
||||||
|
style="width: 240px"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in manufacturerList"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item prop="productionDate" label="出厂日期">
|
||||||
|
<el-date-picker
|
||||||
|
type="daterange"
|
||||||
|
style="width: 240px"
|
||||||
|
unlink-panels
|
||||||
|
range-separator="至"
|
||||||
|
start-placeholder="开始日期"
|
||||||
|
end-placeholder="结束日期"
|
||||||
|
value-format="yyyy-MM-dd"
|
||||||
|
v-model="queryParams.productionDate"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<!-- <el-form-item prop="keyword" label="采购日期">
|
||||||
|
<el-date-picker
|
||||||
|
type="date"
|
||||||
|
style="width: 240px"
|
||||||
|
value-format="YYYY-MM-DD"
|
||||||
|
placeholder="请选择采购日期"
|
||||||
|
v-model="queryParams.applyTime"
|
||||||
|
/>
|
||||||
|
</el-form-item>-->
|
||||||
|
|
||||||
|
<!-- <el-col :span="6"> -->
|
||||||
|
<el-form-item prop="minOriginalValue" label="资产原值(万元)">
|
||||||
|
<el-input
|
||||||
|
clearable
|
||||||
|
style="width: 103px"
|
||||||
|
placeholder="请输入"
|
||||||
|
v-model.trim="queryParams.minOriginalValue"
|
||||||
|
@input="handleNumberInput('minOriginalValue')"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<span style="line-height: 30px;margin: 0 10px 0 0px;"> - </span>
|
||||||
|
<el-form-item prop="maxOriginalValue">
|
||||||
|
<el-input
|
||||||
|
clearable
|
||||||
|
style="width: 103px"
|
||||||
|
placeholder="请输入"
|
||||||
|
v-model.trim="queryParams.maxOriginalValue"
|
||||||
|
@input="handleNumberInput('maxOriginalValue')"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<!-- </el-col> -->
|
||||||
|
|
||||||
|
|
||||||
|
<!-- <el-col :span="18" style="text-align: right;"> -->
|
||||||
|
<el-form-item style="display: flex; justify-content: flex-end">
|
||||||
|
<el-button class="primary-lease" size="mini" type="primary" icon="el-icon-search"
|
||||||
|
@click="getEquipmentApplyList"
|
||||||
|
>
|
||||||
|
查询
|
||||||
|
</el-button>
|
||||||
|
<el-button class="primary-lease" size="mini" icon="el-icon-refresh" @click="resetForm">
|
||||||
|
重置
|
||||||
|
</el-button>
|
||||||
|
</el-form-item>
|
||||||
|
<!-- </el-col> -->
|
||||||
|
</el-row>
|
||||||
|
</el-card>
|
||||||
|
</el-form>
|
||||||
|
<el-card class="content-box">
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="24" style="text-align: right;">
|
||||||
|
<el-button
|
||||||
size="mini"
|
size="mini"
|
||||||
class="primary-lease"
|
class="primary-lease"
|
||||||
type="primary"
|
type="primary"
|
||||||
|
|
@ -154,8 +158,8 @@
|
||||||
>
|
>
|
||||||
收起明细
|
收起明细
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<!-- 表格 -->
|
<!-- 表格 -->
|
||||||
<el-table ref="tableRef" :data="tableData" :span-method="handleSpanMethod" border stripe height="546">
|
<el-table ref="tableRef" :data="tableData" :span-method="handleSpanMethod" border stripe height="546">
|
||||||
<!-- <el-table :data="tableData" >-->
|
<!-- <el-table :data="tableData" >-->
|
||||||
|
|
@ -178,13 +182,17 @@
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
|
||||||
<el-table-column prop="name" label="装备名称" show-overflow-tooltip align="center" min-width="100"/>
|
<el-table-column prop="name" label="装备名称" show-overflow-tooltip align="center" min-width="100"/>
|
||||||
<el-table-column prop="specificationModel" label="规格型号" show-overflow-tooltip align="center" min-width="100"/>
|
<el-table-column prop="specificationModel" label="规格型号" show-overflow-tooltip align="center"
|
||||||
|
min-width="100"
|
||||||
|
/>
|
||||||
<el-table-column prop="originalCode" label="装备原始编码" show-overflow-tooltip align="center" min-width="100"/>
|
<el-table-column prop="originalCode" label="装备原始编码" show-overflow-tooltip align="center" min-width="100"/>
|
||||||
<el-table-column prop="unit" label="计量单位" show-overflow-tooltip align="center" min-width="100"/>
|
<el-table-column prop="unit" label="计量单位" show-overflow-tooltip align="center" min-width="100"/>
|
||||||
<el-table-column prop="manufacturer" label="生产厂家" show-overflow-tooltip align="center" min-width="100"/>
|
<el-table-column prop="manufacturer" label="生产厂家" show-overflow-tooltip align="center" min-width="100"/>
|
||||||
<el-table-column prop="productionDate" label="出厂日期" show-overflow-tooltip align="center" min-width="100"/>
|
<el-table-column prop="productionDate" label="出厂日期" show-overflow-tooltip align="center" min-width="100"/>
|
||||||
<!-- <el-table-column prop="orderNumber" label="采购日期" align="center"/>-->
|
<!-- <el-table-column prop="orderNumber" label="采购日期" align="center"/>-->
|
||||||
<el-table-column prop="originalValue" label="资产原值(万元)" show-overflow-tooltip align="center" min-width="100"/>
|
<el-table-column prop="originalValue" label="资产原值(万元)" show-overflow-tooltip align="center"
|
||||||
|
min-width="100"
|
||||||
|
/>
|
||||||
<!-- <el-table-column prop="orderNumber" label="最大使用年限(年)" align="center"/>-->
|
<!-- <el-table-column prop="orderNumber" label="最大使用年限(年)" align="center"/>-->
|
||||||
<!-- <el-table-column prop="orderNumber" label="下次维保日期" align="center"/>-->
|
<!-- <el-table-column prop="orderNumber" label="下次维保日期" align="center"/>-->
|
||||||
<el-table-column prop="province" label="所属省份" show-overflow-tooltip align="center" min-width="100"/>
|
<el-table-column prop="province" label="所属省份" show-overflow-tooltip align="center" min-width="100"/>
|
||||||
|
|
@ -198,7 +206,9 @@
|
||||||
<span style="color: #00a288; cursor: pointer" @click="handleView(row, 2)">查看</span>
|
<span style="color: #00a288; cursor: pointer" @click="handleView(row, 2)">查看</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="inspectionReports" label="定期检验报告" show-overflow-tooltip align="center" min-width="100">
|
<el-table-column prop="inspectionReports" label="定期检验报告" show-overflow-tooltip align="center"
|
||||||
|
min-width="100"
|
||||||
|
>
|
||||||
<template v-slot="{ row }">
|
<template v-slot="{ row }">
|
||||||
<span style="color: #00a288; cursor: pointer" @click="handleView(row, 3)">查看</span>
|
<span style="color: #00a288; cursor: pointer" @click="handleView(row, 3)">查看</span>
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -265,19 +275,19 @@
|
||||||
</el-table>
|
</el-table>
|
||||||
|
|
||||||
<div class="pagination-wrapper">
|
<div class="pagination-wrapper">
|
||||||
<!-- 分页 -->
|
<!-- 分页 -->
|
||||||
<pagination
|
<pagination
|
||||||
:total="total"
|
:total="total"
|
||||||
@pagination="handlePageChange"
|
@pagination="handlePageChange"
|
||||||
:page.sync="queryParams.pageNum"
|
:page.sync="queryParams.pageNum"
|
||||||
:limit.sync="queryParams.pageSize"
|
:limit.sync="queryParams.pageSize"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
<!-- 弹框 -->
|
<!-- 弹框 -->
|
||||||
<el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="40%">
|
<el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="40%">
|
||||||
<el-table :data="dialogList" fit highlight-current-row style="width: 100%" height="546">
|
<el-table :data="dialogList" fit highlight-current-row style="width: 100%" height="546">
|
||||||
<el-table-column type="index" width="55" label="序号" align="center" />
|
<el-table-column type="index" width="55" label="序号" align="center"/>
|
||||||
<el-table-column label="附件名称" prop="fileName" align="center">
|
<el-table-column label="附件名称" prop="fileName" align="center">
|
||||||
<!-- 插槽 -->
|
<!-- 插槽 -->
|
||||||
<template v-slot="{ row }">
|
<template v-slot="{ row }">
|
||||||
|
|
@ -319,11 +329,17 @@ export default {
|
||||||
manufacturerId: '',
|
manufacturerId: '',
|
||||||
productionDate: '',
|
productionDate: '',
|
||||||
originalValue: '',
|
originalValue: '',
|
||||||
maxBuyPrice: '',
|
minOriginalValue: '',
|
||||||
|
maxOriginalValue: '',
|
||||||
|
|
||||||
pageNum: 1,
|
pageNum: 1,
|
||||||
pageSize: 10
|
pageSize: 10
|
||||||
},
|
},
|
||||||
|
// 用于存储上一次的有效值,避免循环验证
|
||||||
|
lastValidValues: {
|
||||||
|
minOriginalValue: '',
|
||||||
|
maxOriginalValue: ''
|
||||||
|
},
|
||||||
manufacturerList: [],
|
manufacturerList: [],
|
||||||
tableData: [],
|
tableData: [],
|
||||||
columns2: [],
|
columns2: [],
|
||||||
|
|
@ -345,11 +361,11 @@ export default {
|
||||||
{ key: 40, label: `特征项8`, prop: 'featureItem8', visible: true },
|
{ key: 40, label: `特征项8`, prop: 'featureItem8', visible: true },
|
||||||
{ key: 41, label: `特征值8`, prop: 'featureValue8', visible: true },
|
{ key: 41, label: `特征值8`, prop: 'featureValue8', visible: true },
|
||||||
{ key: 42, label: `特征项9`, prop: 'featureItem9', visible: true },
|
{ key: 42, label: `特征项9`, prop: 'featureItem9', visible: true },
|
||||||
{ key: 43, label: `特征值9`, prop: 'featureValue9', visible: true },
|
{ key: 43, label: `特征值9`, prop: 'featureValue9', visible: true }
|
||||||
],
|
],
|
||||||
dialogVisible: false,
|
dialogVisible: false,
|
||||||
dialogTitle: '',
|
dialogTitle: '',
|
||||||
dialogList: [],
|
dialogList: []
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
|
|
@ -357,6 +373,117 @@ export default {
|
||||||
this.getManufacturerSelectList()
|
this.getManufacturerSelectList()
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
handleNumberInput(key) {
|
||||||
|
let value = this.queryParams[key] || ''
|
||||||
|
// 1. 清理输入
|
||||||
|
const cleanedValue = this.cleanNumberInput(value)
|
||||||
|
|
||||||
|
// 2. 存储为上次有效值(清理后)
|
||||||
|
this.lastValidValues[key] = cleanedValue
|
||||||
|
|
||||||
|
// 3. 根据输入类型进行验证
|
||||||
|
if (key === 'minOriginalValue') {
|
||||||
|
this.queryParams[key] = this.validateMinValue(cleanedValue)
|
||||||
|
} else if (key === 'maxOriginalValue') {
|
||||||
|
this.queryParams[key] = this.validateMaxValue(cleanedValue)
|
||||||
|
} else {
|
||||||
|
this.queryParams[key] = cleanedValue
|
||||||
|
}
|
||||||
|
|
||||||
|
// 4. 确保响应式更新
|
||||||
|
this.$forceUpdate()
|
||||||
|
},
|
||||||
|
|
||||||
|
// 清理数字输入
|
||||||
|
cleanNumberInput(input) {
|
||||||
|
if (!input) return ''
|
||||||
|
|
||||||
|
// 过滤非数字和小数点
|
||||||
|
let cleaned = input.replace(/[^\d.]/g, '')
|
||||||
|
|
||||||
|
// 处理多个小数点
|
||||||
|
const dotIndex = cleaned.indexOf('.')
|
||||||
|
if (dotIndex !== -1) {
|
||||||
|
const before = cleaned.substring(0, dotIndex + 1)
|
||||||
|
const after = cleaned.substring(dotIndex + 1).replace(/\./g, '')
|
||||||
|
cleaned = before + after
|
||||||
|
}
|
||||||
|
|
||||||
|
// 限制小数位数
|
||||||
|
const parts = cleaned.split('.')
|
||||||
|
if (parts.length > 1) {
|
||||||
|
cleaned = parts[0] + '.' + parts[1].slice(0, 2)
|
||||||
|
}
|
||||||
|
|
||||||
|
return cleaned
|
||||||
|
},
|
||||||
|
|
||||||
|
// 验证最小值(不能大于最大值)
|
||||||
|
validateMinValue(value) {
|
||||||
|
// 如果是空值或纯小数点,直接返回
|
||||||
|
if (!value || value === '.') return value
|
||||||
|
|
||||||
|
const maxValue = this.queryParams.maxOriginalValue
|
||||||
|
const minNum = this.safeParseNumber(value)
|
||||||
|
const maxNum = this.safeParseNumber(maxValue)
|
||||||
|
|
||||||
|
// 如果最大值无效,直接返回清理后的值
|
||||||
|
if (maxNum === null) return value
|
||||||
|
|
||||||
|
// 如果最小值大于最大值,则使用最大值
|
||||||
|
if (minNum !== null && minNum > maxNum) {
|
||||||
|
return maxValue
|
||||||
|
}
|
||||||
|
|
||||||
|
return value
|
||||||
|
},
|
||||||
|
|
||||||
|
// 验证最大值(不能小于最小值)
|
||||||
|
validateMaxValue(value) {
|
||||||
|
// 如果是空值或纯小数点,直接返回
|
||||||
|
if (!value || value === '.') return value
|
||||||
|
|
||||||
|
const minValue = this.queryParams.minOriginalValue
|
||||||
|
const maxNum = this.safeParseNumber(value)
|
||||||
|
const minNum = this.safeParseNumber(minValue)
|
||||||
|
|
||||||
|
// 如果最小值无效,直接返回清理后的值
|
||||||
|
if (minNum === null) return value
|
||||||
|
|
||||||
|
// 如果最大值小于最小值,则使用最小值
|
||||||
|
if (maxNum !== null && maxNum < minNum) {
|
||||||
|
return minValue
|
||||||
|
}
|
||||||
|
|
||||||
|
return value
|
||||||
|
},
|
||||||
|
|
||||||
|
// 安全解析数字
|
||||||
|
safeParseNumber(str) {
|
||||||
|
if (!str || str === '.' || isNaN(Number(str))) {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
return Number(str)
|
||||||
|
},
|
||||||
|
|
||||||
|
// 同时验证两个值(在表单提交前调用)
|
||||||
|
validateNumberRange() {
|
||||||
|
const minNum = this.safeParseNumber(this.queryParams.minOriginalValue)
|
||||||
|
const maxNum = this.safeParseNumber(this.queryParams.maxOriginalValue)
|
||||||
|
|
||||||
|
if (minNum !== null && maxNum !== null && minNum > maxNum) {
|
||||||
|
// 交换值,使最小值 <= 最大值
|
||||||
|
const temp = this.queryParams.minOriginalValue
|
||||||
|
this.queryParams.minOriginalValue = this.queryParams.maxOriginalValue
|
||||||
|
this.queryParams.maxOriginalValue = temp
|
||||||
|
|
||||||
|
// 提示用户
|
||||||
|
this.$message.warning('已自动调整数值范围,确保最小值 ≤ 最大值')
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
|
},
|
||||||
// 获取厂家
|
// 获取厂家
|
||||||
getManufacturerSelectList() {
|
getManufacturerSelectList() {
|
||||||
getManufacturerSelectApi().then((res) => {
|
getManufacturerSelectApi().then((res) => {
|
||||||
|
|
@ -370,6 +497,7 @@ export default {
|
||||||
* 获取装备申请列表
|
* 获取装备申请列表
|
||||||
*/
|
*/
|
||||||
getEquipmentApplyList() {
|
getEquipmentApplyList() {
|
||||||
|
this.validateNumberRange()
|
||||||
this.queryParams.startOrderCreateTime = this.queryParams.orderCreateTime ? this.queryParams.orderCreateTime[0] : ''
|
this.queryParams.startOrderCreateTime = this.queryParams.orderCreateTime ? this.queryParams.orderCreateTime[0] : ''
|
||||||
this.queryParams.endOrderCreateTime = this.queryParams.orderCreateTime ? this.queryParams.orderCreateTime[1] : ''
|
this.queryParams.endOrderCreateTime = this.queryParams.orderCreateTime ? this.queryParams.orderCreateTime[1] : ''
|
||||||
this.queryParams.startProductionDate = this.queryParams.productionDate ? this.queryParams.productionDate[0] : ''
|
this.queryParams.startProductionDate = this.queryParams.productionDate ? this.queryParams.productionDate[0] : ''
|
||||||
|
|
@ -477,11 +605,11 @@ export default {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
approved(maId,csId) {
|
approved(maId, csId) {
|
||||||
const data = {
|
const data = {
|
||||||
devIds:maId,
|
devIds: maId,
|
||||||
id:csId,
|
id: csId,
|
||||||
status:1
|
status: 1
|
||||||
}
|
}
|
||||||
|
|
||||||
this.$confirm('是否确定通过?', '提示', {
|
this.$confirm('是否确定通过?', '提示', {
|
||||||
|
|
@ -498,11 +626,11 @@ export default {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
reject(maId,csId) {
|
reject(maId, csId) {
|
||||||
const data = {
|
const data = {
|
||||||
devIds:maId,
|
devIds: maId,
|
||||||
id:csId,
|
id: csId,
|
||||||
status:1
|
status: 1
|
||||||
}
|
}
|
||||||
this.$confirm('是否确定驳回?', '提示', {
|
this.$confirm('是否确定驳回?', '提示', {
|
||||||
confirmButtonText: '确定',
|
confirmButtonText: '确定',
|
||||||
|
|
@ -551,7 +679,7 @@ export default {
|
||||||
this.dialogList = row.purchaseInvoices || []
|
this.dialogList = row.purchaseInvoices || []
|
||||||
}
|
}
|
||||||
this.dialogVisible = true
|
this.dialogVisible = true
|
||||||
},
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
@ -653,11 +781,12 @@ export default {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&.el-table--striped .el-table__body tr.el-table__row:hover>td.el-table__cell {
|
&.el-table--striped .el-table__body tr.el-table__row:hover > td.el-table__cell {
|
||||||
background-color: #CCF1E9 !important;
|
background-color: #CCF1E9 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.el-table__body tr.hover-row > td.el-table__cell {
|
.el-table__body tr.hover-row > td.el-table__cell {
|
||||||
background-color: #ccf1e9 !important;
|
background-color: #ccf1e9 !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -440,33 +440,30 @@ export default {
|
||||||
{ label: '规格型号', prop: 'typeName' },
|
{ label: '规格型号', prop: 'typeName' },
|
||||||
{ label: '计量单位', prop: 'unitName' },
|
{ label: '计量单位', prop: 'unitName' },
|
||||||
{ label: '工具编码', prop: 'toolCode' },
|
{ label: '工具编码', prop: 'toolCode' },
|
||||||
// {
|
{
|
||||||
// label: "工具状态",
|
label: "工具状态",
|
||||||
// prop: "status",
|
prop: "status",
|
||||||
// width: 120,
|
width: 120,
|
||||||
// render: (h, { row }) => {
|
render: (h, { row }) => {
|
||||||
// const statusOptions = {
|
const statusOptions = {
|
||||||
// 0: { text: "在库", type: "success" },
|
0: { text: "在库", type: "success" },
|
||||||
// 1: { text: "在用", type: "info" },
|
1: { text: "在用", type: "info" },
|
||||||
// 2: { text: "在修", type: "warning" },
|
2: { text: "在修", type: "warning" },
|
||||||
// 3: { text: "已报废", type: "danger" },
|
3: { text: "已报废", type: "danger" },
|
||||||
// };
|
};
|
||||||
// const option = statusOptions[row.status] || {
|
const option = statusOptions[row.status]
|
||||||
// text: "未知状态",
|
return h(
|
||||||
// type: "",
|
"el-tag",
|
||||||
// };
|
{
|
||||||
// return h(
|
props: {
|
||||||
// "el-tag",
|
type: option.type,
|
||||||
// {
|
size: "mini",
|
||||||
// props: {
|
},
|
||||||
// type: option.type,
|
},
|
||||||
// size: "mini",
|
option.text
|
||||||
// },
|
);
|
||||||
// },
|
},
|
||||||
// option.text
|
},
|
||||||
// );
|
|
||||||
// },
|
|
||||||
// },
|
|
||||||
{ label: '下次检验时间', prop: 'nextCheckDate' },
|
{ label: '下次检验时间', prop: 'nextCheckDate' },
|
||||||
{ label: '生产厂家', prop: 'supplierName', width: 200 },
|
{ label: '生产厂家', prop: 'supplierName', width: 200 },
|
||||||
{ label: '出厂日期', prop: 'productionDate' },
|
{ label: '出厂日期', prop: 'productionDate' },
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue