适用班组数

This commit is contained in:
bb_pan 2025-07-03 10:11:29 +08:00
parent 56d62bdf32
commit 050ba909bc
2 changed files with 95 additions and 61 deletions

View File

@ -83,6 +83,16 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="适用班组数" prop="fitNum">
<el-input
v-model="maForm.fitNum"
placeholder="请输入适用班组数"
maxlength="10"
type="number"
style="width: 240px"
@blur="fitNumChange"
/>
</el-form-item>
<el-form-item label="业务单号" prop="code" v-if="isEdit || isDetail"> <el-form-item label="业务单号" prop="code" v-if="isEdit || isDetail">
<el-input <el-input
v-model="maForm.code" v-model="maForm.code"
@ -150,7 +160,12 @@
top: tooltipPosition.y + 'px' top: tooltipPosition.y + 'px'
}" }"
> >
<img :src="currentTooltipItem.imageUrl || defaultImage" style="max-width: 200px; max-height: 150px;" @load="imageLoaded" @error="imageLoadError"/> <img
:src="currentTooltipItem.imageUrl || defaultImage"
style="max-width: 200px; max-height: 150px"
@load="imageLoaded"
@error="imageLoadError"
/>
<p>库存: {{ currentTooltipItem.storageNum }}</p> <p>库存: {{ currentTooltipItem.storageNum }}</p>
</div> </div>
</el-col> </el-col>
@ -249,7 +264,7 @@
filterable filterable
clearable clearable
:disabled="isDetail" :disabled="isDetail"
@change="(selectedIds) => getTypeList(scope.row, selectedIds, scope.$index)" @change="selectedIds => getTypeList(scope.row, selectedIds, scope.$index)"
></el-cascader> ></el-cascader>
<span v-else>{{ scope.row.maTypeName }}</span> <span v-else>{{ scope.row.maTypeName }}</span>
@ -264,9 +279,14 @@
filterable filterable
placeholder="请选择规格型号" placeholder="请选择规格型号"
:disabled="isDetail" :disabled="isDetail"
@change="(val) => changeTypeName(scope.row, val, getSelectedItemName(val,scope.row))" @change="val => changeTypeName(scope.row, val, getSelectedItemName(val, scope.row))"
> >
<el-option v-for="item in scope.row.typeList" :key="item.typeId" :label="item.name" :value="item.typeId"></el-option> <el-option
v-for="item in scope.row.typeList"
:key="item.typeId"
:label="item.name"
:value="item.typeId"
></el-option>
</el-select> </el-select>
<span v-else>{{ scope.row.typeName }}</span> <span v-else>{{ scope.row.typeName }}</span>
</template> </template>
@ -358,7 +378,6 @@
</span> </span>
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
<script> <script>
@ -427,8 +446,10 @@ export default {
code: '', // code: '', //
supplierTime: '', // supplierTime: '', //
supplierPlace: '', // supplierPlace: '', //
bmFileInfos: [] // bmFileInfos: [], //
fitNum: 1
}, },
lastFitNum: 1,
pickerOptions: { pickerOptions: {
disabledDate(time) { disabledDate(time) {
// //
@ -493,9 +514,7 @@ export default {
trigger: 'change' trigger: 'change'
} }
], ],
deviceType: [ deviceType: [{ required: true, message: '请选择类型规格', trigger: 'blur' }]
{ required: true, message: '请选择类型规格', trigger: 'blur' }
]
}, },
maTypeList: [], // maTypeList: [], //
// //
@ -610,26 +629,38 @@ export default {
console.log(this.$route.query, 'this.$route.query') console.log(this.$route.query, 'this.$route.query')
}, },
methods: { methods: {
fitNumChange() {
const newVal = Math.min(5, Math.max(1, parseInt(this.maForm.fitNum) || 1))
const ratio = newVal / this.lastFitNum
this.equipmentList.forEach(item => {
if (typeof item.preNum === 'number') {
item.preNum = Math.max(1, Math.floor(item.preNum * ratio)) // 1
}
})
this.lastFitNum = newVal
this.maForm.fitNum = newVal
},
showCustomTooltip(item, event) { showCustomTooltip(item, event) {
clearTimeout(this.tooltipTimeout); clearTimeout(this.tooltipTimeout)
this.tooltipTimeout = setTimeout(() => { this.tooltipTimeout = setTimeout(() => {
this.currentTooltipItem = item; this.currentTooltipItem = item
this.tooltipPosition = { this.tooltipPosition = {
x: event.clientX + 15, x: event.clientX + 15,
y: event.clientY + 15 y: event.clientY + 15
}; }
}, 300); // 300ms }, 300) // 300ms
}, },
imageLoaded() { imageLoaded() {
this.shouldShowTooltip = true; // this.shouldShowTooltip = true //
}, },
imageLoadError() { imageLoadError() {
this.shouldShowTooltip = true; // this.shouldShowTooltip = true //
}, },
hideCustomTooltip() { hideCustomTooltip() {
clearTimeout(this.tooltipTimeout); clearTimeout(this.tooltipTimeout)
this.currentTooltipItem = null; this.currentTooltipItem = null
}, },
// -tree // -tree
async getMaTypeNameOpt() { async getMaTypeNameOpt() {
@ -712,10 +743,9 @@ export default {
} }
}, },
getSelectedItemName(typeId, row) { getSelectedItemName(typeId, row) {
const selectedItem = row.typeList.find(item => item.typeId === typeId); const selectedItem = row.typeList.find(item => item.typeId === typeId)
return selectedItem ? selectedItem.name : ''; return selectedItem ? selectedItem.name : ''
}, },
// //
changeTypeName(row, val, name) { changeTypeName(row, val, name) {
@ -723,17 +753,17 @@ export default {
console.log('🚀 ~ changeTypeName ~ val:', val) console.log('🚀 ~ changeTypeName ~ val:', val)
this.equipmentList.some(item => { this.equipmentList.some(item => {
// //
if (item === row) return false; if (item === row) return false
if (item.typeId === val) { if (item.typeId === val) {
this.$message({ this.$message({
message: `${name} 已添加到列表中`, message: `${name} 已添加到列表中`,
type: 'warning' type: 'warning'
}); })
row.typeId = ''; row.typeId = ''
return true; return true
} }
return false; return false
}); })
// console.log('xxxxxxxxxxxxxxxxx', this.equipmentList.some(item => item.typeId === val)) // console.log('xxxxxxxxxxxxxxxxx', this.equipmentList.some(item => item.typeId === val))
// if (this.equipmentList.some(item => item.typeId === val)) { // if (this.equipmentList.some(item => item.typeId === val)) {
// // console.log("yyyyyyyyyyy",item.typeId) // // console.log("yyyyyyyyyyy",item.typeId)
@ -1201,7 +1231,11 @@ export default {
handleDownload(file) { handleDownload(file) {
console.log(file) console.log(file)
if (file.status === 'ready') { if (file.status === 'ready') {
downloadFile({ fileName: file.name, fileData: file.raw, fileType: 'application/vnd.ms-excel;charset=utf-8' }) downloadFile({
fileName: file.name,
fileData: file.raw,
fileType: 'application/vnd.ms-excel;charset=utf-8'
})
} else if (file.status === 'success') { } else if (file.status === 'success') {
downloadFileData({ fileName: file.name, fileUrl: file.url }) downloadFileData({ fileName: file.name, fileUrl: file.url })
// downloadFileData({ fileName: file.name,fileUrl:file.url }) // downloadFileData({ fileName: file.name,fileUrl:file.url })
@ -1287,17 +1321,17 @@ export default {
// //
handleExport() { handleExport() {
try { try {
const formatTime = (date) => { const formatTime = date => {
const year = date.getFullYear(); const year = date.getFullYear()
const month = String(date.getMonth() + 1).padStart(2, '0'); const month = String(date.getMonth() + 1).padStart(2, '0')
const day = String(date.getDate()).padStart(2, '0'); const day = String(date.getDate()).padStart(2, '0')
const hours = String(date.getHours()).padStart(2, '0'); const hours = String(date.getHours()).padStart(2, '0')
const minutes = String(date.getMinutes()).padStart(2, '0'); const minutes = String(date.getMinutes()).padStart(2, '0')
const seconds = String(date.getSeconds()).padStart(2, '0'); const seconds = String(date.getSeconds()).padStart(2, '0')
return `${year}${month}${day}_${hours}${minutes}${seconds}`; return `${year}${month}${day}_${hours}${minutes}${seconds}`
}; }
const currentTime = formatTime(new Date()); const currentTime = formatTime(new Date())
let fileName = `工器具清单_${currentTime}.xLsx` let fileName = `工器具清单_${currentTime}.xLsx`
let url = '/material/leaseTask/export' let url = '/material/leaseTask/export'

View File

@ -132,7 +132,7 @@
rows="2" rows="2"
/> />
</el-form-item> </el-form-item>
<el-form-item label="适用班组数" prop="fitNum"> <!-- <el-form-item label="适用班组数" prop="fitNum">
<el-input <el-input
v-model="maForm.fitNum" v-model="maForm.fitNum"
placeholder="请输入适用班组数" placeholder="请输入适用班组数"
@ -141,7 +141,7 @@
style="width: 240px" style="width: 240px"
@blur="fitNumChange" @blur="fitNumChange"
/> />
</el-form-item> </el-form-item> -->
</el-form> </el-form>
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<el-col :span="1.5"> <el-col :span="1.5">