镀层厚度对应表添加穿梭框

dev-scheduling
姜雪 3 weeks ago
parent a69d3f4a6f
commit fa373d3f1e
  1. 131
      src/views/basicData/platThicknessRelation/index.vue
  2. 5
      src/views/energyManagement/components/waterQuota.vue
  3. 45
      src/views/energyManagement/components/waterTarget.vue
  4. 99
      src/views/energyManagement/energyMonitoring.vue

@ -26,6 +26,23 @@
<template #menu-right> <template #menu-right>
<el-button type="primary" @click="handleImport">导入 </el-button> <el-button type="primary" @click="handleImport">导入 </el-button>
</template> </template>
<template #levelNum-form="{ type }">
<div style="width: 100%;">
{{ console.log('levelNum-form 插槽渲染, type:', type, 'form.levelNum:', form.levelNum, 'form.levelNum类型:', typeof form.levelNum, '是否数组:', Array.isArray(form.levelNum), 'gradeData前3项:', gradeData.slice(0, 3)) }}
<el-transfer
v-if="type === 'add' || type === 'edit'"
v-model="form.levelNum"
:data="gradeData"
:titles="['未选择', '已选择']"
filterable
:props="{
key: 'key',
label: 'label'
}"
style="text-align: left;"
></el-transfer>
</div>
</template>
</avue-crud> </avue-crud>
<barchSet v-if="isOpen" :showDialog="isOpen" :list="selectionList" @closeDialog="closeDialog"></barchSet> <barchSet v-if="isOpen" :showDialog="isOpen" :list="selectionList" @closeDialog="closeDialog"></barchSet>
<!-- 导入 --> <!-- 导入 -->
@ -40,6 +57,7 @@
import barchSet from "./barchSet.vue"; import barchSet from "./barchSet.vue";
import basicImport from '@/components/basic-import/main.vue' import basicImport from '@/components/basic-import/main.vue'
import {getList,addThickness,updateThickness,deleteThickness} from "@/api/basicData/platThicknessRelation" import {getList,addThickness,updateThickness,deleteThickness} from "@/api/basicData/platThicknessRelation"
import {getProduction} from "@/api/basicData/ruleMaintenance"
export default { export default {
components: { components: {
barchSet, barchSet,
@ -51,6 +69,7 @@ export default {
selectionList: [], selectionList: [],
loading:false, loading:false,
query:{}, query:{},
gradeData: [],
option: { option: {
height: "auto", height: "auto",
calcHeight: 32, calcHeight: 32,
@ -105,37 +124,17 @@ export default {
prop: "thicknessCode", prop: "thicknessCode",
sortable: true, sortable: true,
filter: true, filter: true,
span: 12, labelWidth: 150,
span: 24,
search: true, search: true,
}, },
{
label: "质量等级",
prop: "levelNum",
type:"select",
// multiple: true,
// multipleLimit: 0,
dicUrl:"/api/blade-scheduling/qualityGrade/getGrades",
props:{
label:"qualityGrade",
value:"qualityGrade"
},
sortable: true,
filter: true,
span: 12,
search: false,
formatter: (row, value, label, column) => {
if (Array.isArray(value)) {
return value.join(', ');
}
return value || '';
},
},
{ {
label: "是否以21E8-210开头", label: "是否以21E8-210开头",
prop: "startF21e8", prop: "startF21e8",
sortable: true, sortable: true,
filter: true, filter: true,
span: 12, span: 24,
search: false, search: false,
labelWidth: 150, labelWidth: 150,
type: "select", type: "select",
@ -153,11 +152,30 @@ export default {
{ {
label: "厚度", label: "厚度",
prop: "thickness", prop: "thickness",
labelWidth: 150,
sortable: true, sortable: true,
filter: true, filter: true,
span: 12, span: 24,
search: false, search: false,
}, },
{
label: "质量等级",
prop: "levelNum",
labelWidth: 150,
sortable: true,
filter: true,
span: 24,
search: false,
addDisplay: true,
editDisplay: true,
formslot: true,
formatter: (row, value, label, column) => {
if (Array.isArray(value)) {
return value.join(', ');
}
return value || '';
},
},
], ],
}, },
form: {}, form: {},
@ -169,7 +187,58 @@ export default {
isOpen: false, isOpen: false,
}; };
}, },
mounted() {
this.loadGradeData()
},
methods: { methods: {
loadGradeData() {
getProduction().then(res => {
const rawData = res.data.data || []
this.gradeData = rawData.map(item => ({
key: String(item.qualityGrade),
label: String(item.qualityGrade),
qualityGrade: item.qualityGrade
}))
console.log('质量等级数据加载完成:', this.gradeData)
})
},
beforeOpen(done, type) {
console.log('beforeOpen 开始, type:', type)
console.log('当前form.levelNum:', this.form.levelNum, '类型:', typeof this.form.levelNum)
//
if (this.gradeData.length === 0) {
this.loadGradeData()
}
//
if (type == 'edit') {
if (this.form.levelNum) {
console.log('编辑模式,原始levelNum:', this.form.levelNum, '类型:', typeof this.form.levelNum)
// levelNum
if (typeof this.form.levelNum === 'string') {
this.form.levelNum = this.form.levelNum.split(',').map(item => String(item).trim()).filter(item => item !== '')
} else if (typeof this.form.levelNum === 'number') {
this.form.levelNum = [String(this.form.levelNum)]
} else if (Array.isArray(this.form.levelNum)) {
this.form.levelNum = this.form.levelNum.map(item => String(item).trim())
}
console.log('编辑模式,处理后levelNum:', this.form.levelNum, '是否数组:', Array.isArray(this.form.levelNum))
} else {
this.form.levelNum = []
}
} else if (type == 'add') {
this.form.levelNum = []
}
console.log('beforeOpen 结束,form.levelNum:', this.form.levelNum, '是否数组:', Array.isArray(this.form.levelNum))
// done()
done()
// nextTick
this.$nextTick(() => {
console.log('nextTick 中的 form.levelNum:', this.form.levelNum, '是否数组:', Array.isArray(this.form.levelNum))
})
},
// //
handleImport() { handleImport() {
this.isShowImport = true this.isShowImport = true
@ -191,7 +260,11 @@ export default {
this.onLoad(this.page); this.onLoad(this.page);
}, },
rowSave(row, done, loading){ rowSave(row, done, loading){
addThickness(row).then(res =>{ const params = {
...row,
levelNum: Array.isArray(row.levelNum) ? row.levelNum.join(',') : row.levelNum
}
addThickness(params).then(res => {
if(res.data.code == 200){ if(res.data.code == 200){
this.$message.success('新增成功') this.$message.success('新增成功')
this.onLoad() this.onLoad()
@ -200,7 +273,11 @@ export default {
}) })
}, },
rowUpdate(row, index, done, loading){ rowUpdate(row, index, done, loading){
updateThickness(row).then(res =>{ const params = {
...row,
levelNum: Array.isArray(row.levelNum) ? row.levelNum.join(',') : row.levelNum
}
updateThickness(params).then(res =>{
if(res.data.code == 200){ if(res.data.code == 200){
this.$message.success('修改成功') this.$message.success('修改成功')
this.onLoad() this.onLoad()

@ -131,9 +131,8 @@ export default {
sortable: true, sortable: true,
filter: true, filter: true,
span: 24, span: 24,
type: 'datetime', type: 'date',
format: "yyyy-MM-dd",
valueFormat: "yyyy-MM-dd",
rules: [ rules: [
{ {
required: true, required: true,

@ -114,6 +114,7 @@ export default {
type: "month", type: "month",
format: "YYYY-MM", format: "YYYY-MM",
valueFormat: "YYYY-MM", valueFormat: "YYYY-MM",
valueType: "string",
rules: [ rules: [
{ {
required: true, required: true,
@ -124,7 +125,7 @@ export default {
}, },
{ {
label: "用水目标(L/d㎡)", label: "用水目标(L/d㎡)",
prop: "tapWater", prop: "target",
search: false, search: false,
sortable: true, sortable: true,
filter: true, filter: true,
@ -262,20 +263,48 @@ export default {
}, },
onLoad() { onLoad() {
this.loading = true; this.loading = true;
console.log('=== onLoad 开始 ===');
console.log('请求参数:', {
current: this.page.currentPage,
size: this.page.pageSize,
type: 1
});
pageList( pageList(
this.page.currentPage, this.page.currentPage,
this.page.pageSize, this.page.pageSize,
{ type: 1 } { type: 1 }
).then(res => { ).then(res => {
this.data = res.data.data.records; console.log('API返回数据:', res);
this.page.total = res.data.data.total; console.log('res.data:', res.data);
this.loading = false; console.log('res.data.data:', res.data.data);
setTimeout(() => {
this.selectionClear(); if (res.data && res.data.data) {
}, 500); this.data = res.data.data.records || [];
}).catch(() => { this.page.total = res.data.data.total || 0;
console.log('最终数据:', {
records: this.data,
total: this.page.total,
dataLength: this.data.length
});
} else {
console.error('响应数据格式不正确:', res);
this.data = [];
this.page.total = 0;
}
// 使 nextTick loading
this.$nextTick(() => {
this.loading = false;
setTimeout(() => {
this.selectionClear();
}, 500);
});
}).catch(err => {
console.error('请求失败:', err);
this.loading = false; this.loading = false;
}); });
console.log('=== onLoad 结束 ===');
}, },
}, },
}; };

@ -35,7 +35,7 @@
<!-- 导入 --> <!-- 导入 -->
<basic-import v-if="isShowImport" title="导入" :isShow="isShowImport" <basic-import v-if="isShowImport" title="导入" :isShow="isShowImport"
templateUrl="/blade-desk/QA/CycleTestItem/download-excel-template" templateUrl="/blade-desk/QA/CycleTestItem/download-excel-template"
templateName="试验项目模板.xls" templateName="试验项目模板.xlsx"
importUrl="/blade-desk/QA/CycleTestItem/import-excel" importUrl="/blade-desk/QA/CycleTestItem/import-excel"
@closeDialog="closeDialog"></basic-import> @closeDialog="closeDialog"></basic-import>
</basic-container> </basic-container>
@ -101,29 +101,19 @@ export default {
editBtnIcon: " ", editBtnIcon: " ",
align: "center", align: "center",
column: [ column: [
{ {
label: "月份", label: '月份',
prop: "month", prop: 'month',
sortable: true, type: "month",
filter: true, sortable: true,
span: 12, filter: true,
search: true, format:'YYYY-MM',
width: 130, valueFormat:'YYYY-MM',
type: 'datetimerange', span: 24,
format: 'YYYY-MM-DD', search: true,
valueFormat: 'YYYY-MM-DD', width: 120,
startPlaceholder: '开始日期', searchLabelWidth: 50,
endPlaceholder: '结束日期', },
rangeSeparator: '至',
searchRange: true,
rules: [
{
required: true,
message: "请选择日期范围",
trigger: "change",
},
],
},
{ {
label: "上年度月用水", label: "上年度月用水",
prop: "lastWater", prop: "lastWater",
@ -153,7 +143,7 @@ export default {
}, },
{ {
label: "本年度月用水", label: "本年度月用水",
prop: "yearWater", prop: "currentWater",
search: false, search: false,
sortable: true, sortable: true,
filter: true, filter: true,
@ -162,7 +152,7 @@ export default {
}, },
{ {
label: "本年度月用电", label: "本年度月用电",
prop: "yearElectric", prop: "currentElectric",
search: false, search: false,
sortable: true, sortable: true,
filter: true, filter: true,
@ -171,16 +161,16 @@ export default {
}, },
{ {
label: "本年度月产值", label: "本年度月产值",
prop: "yearNum", prop: "currentOutput",
search: false, search: false,
sortable: true, sortable: true,
filter: true, filter: true,
span: 12, span: 12,
width: 140, width: 140,
}, },
{ {
label: "年度月用水目标", label: "年度月用水目标",
prop: "yearWaterTarget", prop: "lastWaterTarget",
search: false, search: false,
sortable: true, sortable: true,
filter: true, filter: true,
@ -188,8 +178,8 @@ export default {
width: 170, width: 170,
}, },
{ {
label: "月用电目标", label: "上年度月用电目标",
prop: "currentElectricTarget", prop: "lastElectricTarget",
search: false, search: false,
sortable: true, sortable: true,
filter: true, filter: true,
@ -197,25 +187,25 @@ export default {
width: 170, width: 170,
}, },
{ {
label: "本月用水目标", label: "本年度月用水目标",
prop: "currentWaterTarget", prop: "currentWaterTarget",
search: false, search: false,
sortable: true, sortable: true,
filter: true, filter: true,
span: 12, span: 12,
width: 200, width: 170,
}, },
{ {
label: "上月用电实际完成", label: "本年度月用电目标",
prop: "lastElectricRate", prop: "currentElectricTarget",
search: false, search: false,
sortable: true, sortable: true,
filter: true, filter: true,
span: 12, span: 12,
width: 200, width: 170,
}, },
{ {
label: "上月用水实际完成", label: "上年度月用水实际完成",
prop: "lastWaterRate", prop: "lastWaterRate",
search: false, search: false,
sortable: true, sortable: true,
@ -224,7 +214,17 @@ export default {
width: 200, width: 200,
}, },
{ {
label: "本月用电实际完成", label: "上年度月用电实际完成",
prop: "lastElectricRate",
search: false,
sortable: true,
filter: true,
span: 12,
width: 200,
},
{
label: "本年度月用电实际完成",
prop: "currentElectricRate", prop: "currentElectricRate",
search: false, search: false,
sortable: true, sortable: true,
@ -233,7 +233,7 @@ export default {
width: 200, width: 200,
}, },
{ {
label: "本月用水实际完成", label: "本年度月用水实际完成",
prop: "currentWaterRate", prop: "currentWaterRate",
search: false, search: false,
sortable: true, sortable: true,
@ -241,7 +241,24 @@ export default {
span: 12, span: 12,
width: 200, width: 200,
}, },
// {
// label: "",
// prop: "userName",
// search: false,
// sortable: true,
// filter: true,
// span: 12,
// width: 140,
// },
// {
// label: "",
// prop: "uploadTime",
// search: false,
// sortable: true,
// filter: true,
// span: 12,
// width: 140,
// },
], ],
}, },
form: {}, form: {},

Loading…
Cancel
Save