|
@@ -11,7 +11,7 @@
|
|
|
v-model:value="strandNoSelected[item]"
|
|
|
dict="lg_dcgg"
|
|
|
:placeholder="`${item}流定尺`"
|
|
|
- :class="{ changele: strandNoSelectedOrg[item] !== strandNoSelected[item] }"
|
|
|
+ :class="{ changele: strandNoSelectedOrg[item] != strandNoSelected[item] }"
|
|
|
allowClear
|
|
|
/>
|
|
|
</template>
|
|
@@ -91,29 +91,48 @@
|
|
|
<div class="flex justify-between strand-item" v-if="isAllHeat" style="margin: 20px 0">
|
|
|
<div class="flex" style="height: 40px; line-height: 40px">
|
|
|
<span class="mr-2">炉号:</span>
|
|
|
- <a-input v-model:value="newHeatNo" style="width: 180px" size="large" placeholder="请输入炉号" />
|
|
|
+ <a-input
|
|
|
+ :status="newHeatNoStatus"
|
|
|
+ @change="handlerChange($event, 'newHeat')"
|
|
|
+ v-model:value="newHeatNo"
|
|
|
+ style="width: 180px"
|
|
|
+ size="large"
|
|
|
+ type="number"
|
|
|
+ placeholder="请输入炉号"
|
|
|
+ />
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div v-for="(item, index) in Object.keys(strandNums)" class="flex justify-between items-center strand-item" style="margin: 20px 0">
|
|
|
- <div class="strand-num">{{ index + 1 }}流</div>
|
|
|
+ <div v-for="(item, index) in Object.keys(strandFormInfo)" class="flex justify-between items-center strand-item" style="margin: 20px 0">
|
|
|
+ <div class="strand-num">{{ strandFormInfo[item].no }}流</div>
|
|
|
<div class="flex items-center" style="position: relative; width: 120px">
|
|
|
- <component :is="formatDefineSize(heatInfo[strandArr[index]], heatInfo[lengthArr[index]])" />
|
|
|
+ <component :is="formatDefineSize(heatInfo[item], heatInfo[lengthArr[index]])" />
|
|
|
</div>
|
|
|
<div>
|
|
|
<JSearchSelect
|
|
|
type="list"
|
|
|
style="width: 96px"
|
|
|
- v-model:value="strandLength[item]"
|
|
|
+ v-model:value="strandFormInfo[item].size"
|
|
|
dict="lg_dcgg"
|
|
|
- :placeholder="`${index + 1}流定尺`"
|
|
|
+ :placeholder="`${strandFormInfo[item].no}流定尺`"
|
|
|
allowClear
|
|
|
+ :status="strandFormInfo[item].sizeStatus"
|
|
|
+ @change="handlerChange($event, 'sizeStatus', item)"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <a-input-number
|
|
|
+ id="inputNumber"
|
|
|
+ :status="strandFormInfo[item].sumStatus"
|
|
|
+ @change="handlerChange($event, 'sumStatus', item)"
|
|
|
+ v-model:value="strandFormInfo[item].sum"
|
|
|
+ :min="0"
|
|
|
+ :max="10"
|
|
|
/>
|
|
|
</div>
|
|
|
- <div><a-input-number id="inputNumber" v-model:value="strandNums[item]" :min="0" :max="10" /></div>
|
|
|
<div style="width: 140px" v-if="isAllHeat">
|
|
|
- <div class="flex items-center" v-if="isAllHeat && Object.keys(rollClubOneList).includes(item)">
|
|
|
+ <div class="flex items-center" v-if="isAllHeat && strandFormInfo[item].hasOne">
|
|
|
<span class="mr-2" style="color: #f50">去棒一:</span>
|
|
|
- <a-input type="number" v-model:value="rollClubOneList[item]" style="width: 80px" suffix="支" placeholder="棒一" :min="0" />
|
|
|
+ <a-input type="number" v-model:value="strandFormInfo[item].rollClubOne" style="width: 80px" suffix="支" placeholder="棒一" :min="0" />
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -173,30 +192,8 @@
|
|
|
default: true,
|
|
|
},
|
|
|
lengthList: {
|
|
|
- type: Object,
|
|
|
- default: () => ({
|
|
|
- '1': undefined,
|
|
|
- '2': undefined,
|
|
|
- '3': undefined,
|
|
|
- '4': undefined,
|
|
|
- '5': undefined,
|
|
|
- '6': undefined,
|
|
|
- '7': undefined,
|
|
|
- '8': undefined,
|
|
|
- }),
|
|
|
- },
|
|
|
- lengthOrgList: {
|
|
|
- type: Object,
|
|
|
- default: () => ({
|
|
|
- '1': undefined,
|
|
|
- '2': undefined,
|
|
|
- '3': undefined,
|
|
|
- '4': undefined,
|
|
|
- '5': undefined,
|
|
|
- '6': undefined,
|
|
|
- '7': undefined,
|
|
|
- '8': undefined,
|
|
|
- }),
|
|
|
+ type: String,
|
|
|
+ default: '',
|
|
|
},
|
|
|
curShiftInfo: {
|
|
|
type: Object,
|
|
@@ -227,9 +224,74 @@
|
|
|
},
|
|
|
openCompensateModal: (record) => {
|
|
|
openCompensateModal.value = true;
|
|
|
+ strandFormInfo.value = {
|
|
|
+ oneStrandNo: {
|
|
|
+ sum: 0,
|
|
|
+ size: strandNoSelectedOrg.value['1'],
|
|
|
+ sizeName: 'oneLength',
|
|
|
+ sumStatus: '',
|
|
|
+ sizeStatus: '',
|
|
|
+ no: 1,
|
|
|
+ hasOne: true,
|
|
|
+ rollClubOne: 0,
|
|
|
+ },
|
|
|
+ twoStrandNo: {
|
|
|
+ sum: 0,
|
|
|
+ size: strandNoSelectedOrg.value['2'],
|
|
|
+ sizeName: 'twoLength',
|
|
|
+ sumStatus: '',
|
|
|
+ sizeStatus: '',
|
|
|
+ no: 2,
|
|
|
+ hasOne: true,
|
|
|
+ rollClubOne: 0,
|
|
|
+ },
|
|
|
+ threeStrandNo: {
|
|
|
+ sum: 0,
|
|
|
+ size: strandNoSelectedOrg.value['3'],
|
|
|
+ sizeName: 'threeLength',
|
|
|
+ sumStatus: '',
|
|
|
+ sizeStatus: '',
|
|
|
+ no: 3,
|
|
|
+ hasOne: true,
|
|
|
+ rollClubOne: 0,
|
|
|
+ },
|
|
|
+ fourStrandNo: {
|
|
|
+ sum: 0,
|
|
|
+ size: strandNoSelectedOrg.value['4'],
|
|
|
+ sizeName: 'fourLength',
|
|
|
+ sumStatus: '',
|
|
|
+ sizeStatus: '',
|
|
|
+ no: 4,
|
|
|
+ hasOne: true,
|
|
|
+ rollClubOne: 0,
|
|
|
+ },
|
|
|
+ fiveStrandNo: {
|
|
|
+ sum: 0,
|
|
|
+ size: strandNoSelectedOrg.value['5'],
|
|
|
+ sizeName: 'fiveLength',
|
|
|
+ sumStatus: '',
|
|
|
+ sizeStatus: '',
|
|
|
+ no: 5,
|
|
|
+ hasOne: true,
|
|
|
+ rollClubOne: 0,
|
|
|
+ },
|
|
|
+ sixStrandNo: {
|
|
|
+ sum: 0,
|
|
|
+ size: strandNoSelectedOrg.value['6'],
|
|
|
+ sizeName: 'sixLength',
|
|
|
+ sumStatus: '',
|
|
|
+ sizeStatus: '',
|
|
|
+ no: 6,
|
|
|
+ hasOne: true,
|
|
|
+ rollClubOne: 0,
|
|
|
+ },
|
|
|
+ sevenStrandNo: { sum: 0, size: strandNoSelectedOrg.value['7'], sizeName: 'sevenLength', sumStatus: '', sizeStatus: '', no: 7 },
|
|
|
+ eightStrandNo: { sum: 0, size: strandNoSelectedOrg.value['8'], sizeName: 'eightLength', sumStatus: '', sizeStatus: '', no: 8 },
|
|
|
+ };
|
|
|
if (record.dataIndex && record.dataIndex === 'totalInfo') {
|
|
|
heatInfo.value = {};
|
|
|
isAllHeat.value = true;
|
|
|
+ newHeatNo.value = '';
|
|
|
} else {
|
|
|
heatInfo.value = record;
|
|
|
isAllHeat.value = false;
|
|
@@ -239,57 +301,20 @@
|
|
|
|
|
|
// 补录钢坯
|
|
|
const openCompensateModal = ref(false);
|
|
|
- const strandNums = ref<any>({
|
|
|
- oneStrandNoSum: 0,
|
|
|
- twoStrandNoSum: 0,
|
|
|
- threeStrandNoSum: 0,
|
|
|
- fourStrandNoSum: 0,
|
|
|
- fiveStrandNoSum: 0,
|
|
|
- sixStrandNoSum: 0,
|
|
|
- sevenStrandNoSum: 0,
|
|
|
- eightStrandNoSum: 0,
|
|
|
- });
|
|
|
- const strandLength = ref({
|
|
|
- oneStrandNoSum: undefined,
|
|
|
- twoStrandNoSum: undefined,
|
|
|
- threeStrandNoSum: undefined,
|
|
|
- fourStrandNoSum: undefined,
|
|
|
- fiveStrandNoSum: undefined,
|
|
|
- sixStrandNoSum: undefined,
|
|
|
- sevenStrandNoSum: undefined,
|
|
|
- eightStrandNoSum: undefined,
|
|
|
+ // 补录钢坯信息 sum 数量 size 定尺 status 状态 no 流号
|
|
|
+ const strandFormInfo = ref<any>({
|
|
|
+ oneStrandNo: { sum: 0, size: undefined, sizeName: 'oneLength', sumStatus: '', sizeStatus: '', no: 1, hasOne: true, rollClubOne: 0 },
|
|
|
+ twoStrandNo: { sum: 0, size: undefined, sizeName: 'twoLength', sumStatus: '', sizeStatus: '', no: 2, hasOne: true, rollClubOne: 0 },
|
|
|
+ threeStrandNo: { sum: 0, size: undefined, sizeName: 'threeLength', sumStatus: '', sizeStatus: '', no: 3, hasOne: true, rollClubOne: 0 },
|
|
|
+ fourStrandNo: { sum: 0, size: undefined, sizeName: 'fourLength', sumStatus: '', sizeStatus: '', no: 4, hasOne: true, rollClubOne: 0 },
|
|
|
+ fiveStrandNo: { sum: 0, size: undefined, sizeName: 'fiveLength', sumStatus: '', sizeStatus: '', no: 5, hasOne: true, rollClubOne: 0 },
|
|
|
+ sixStrandNo: { sum: 0, size: undefined, sizeName: 'sixLength', sumStatus: '', sizeStatus: '', no: 6, hasOne: true, rollClubOne: 0 },
|
|
|
+ sevenStrandNo: { sum: 0, size: undefined, sizeName: 'sevenLength', sumStatus: '', sizeStatus: '', no: 7 },
|
|
|
+ eightStrandNo: { sum: 0, size: undefined, sizeName: 'eightLength', sumStatus: '', sizeStatus: '', no: 8 },
|
|
|
});
|
|
|
+
|
|
|
const closeCompensateModal = () => {
|
|
|
openCompensateModal.value = false;
|
|
|
- strandNums.value = {
|
|
|
- oneStrandNoSum: 0,
|
|
|
- twoStrandNoSum: 0,
|
|
|
- threeStrandNoSum: 0,
|
|
|
- fourStrandNoSum: 0,
|
|
|
- fiveStrandNoSum: 0,
|
|
|
- sixStrandNoSum: 0,
|
|
|
- sevenStrandNoSum: 0,
|
|
|
- eightStrandNoSum: 0,
|
|
|
- };
|
|
|
- strandLength.value = {
|
|
|
- oneStrandNoSum: undefined,
|
|
|
- twoStrandNoSum: undefined,
|
|
|
- threeStrandNoSum: undefined,
|
|
|
- fourStrandNoSum: undefined,
|
|
|
- fiveStrandNoSum: undefined,
|
|
|
- sixStrandNoSum: undefined,
|
|
|
- sevenStrandNoSum: undefined,
|
|
|
- eightStrandNoSum: undefined,
|
|
|
- };
|
|
|
- rollClubOneList.value = {
|
|
|
- oneStrandNoSum: 0,
|
|
|
- twoStrandNoSum: 0,
|
|
|
- threeStrandNoSum: 0,
|
|
|
- fourStrandNoSum: 0,
|
|
|
- fiveStrandNoSum: 0,
|
|
|
- sixStrandNoSum: 0,
|
|
|
- };
|
|
|
- newHeatNo.value = '';
|
|
|
};
|
|
|
// 格式化定尺
|
|
|
const formatDefineSize = (num, jsonStr) => {
|
|
@@ -299,49 +324,58 @@
|
|
|
return renderStrandCell({ num, lengthJsonStr: jsonStr });
|
|
|
};
|
|
|
|
|
|
- const staticStrandInfo = {
|
|
|
- oneStrandNoSum: { size: 'oneLength', no: 'oneStrandNo', noNum: 1 },
|
|
|
- twoStrandNoSum: { size: 'twoLength', no: 'twoStrandNo', noNum: 2 },
|
|
|
- threeStrandNoSum: { size: 'threeLength', no: 'threeStrandNo', noNum: 3 },
|
|
|
- fourStrandNoSum: { size: 'fourLength', no: 'fourStrandNo', noNum: 4 },
|
|
|
- fiveStrandNoSum: { size: 'fiveLength', no: 'fiveStrandNo', noNum: 5 },
|
|
|
- sixStrandNoSum: { size: 'sixLength', no: 'sixStrandNo', noNum: 6 },
|
|
|
- sevenStrandNoSum: { size: 'sevenLength', no: 'sevenStrandNo', noNum: 7 },
|
|
|
- eightStrandNoSum: { size: 'eightLength', no: 'eightStrandNo', noNum: 8 },
|
|
|
+ // 验证状态
|
|
|
+ const handlerChange = (e, type, k?: string) => {
|
|
|
+ // newHeat, sizeStatus, sumStatus
|
|
|
+ if (type === 'newHeat') {
|
|
|
+ newHeatNoStatus.value = e && e.target && e.target.value.trim() ? '' : 'error';
|
|
|
+ }
|
|
|
+ if (type === 'sumStatus' && k) {
|
|
|
+ strandFormInfo.value[k].sumStatus = e >= 0 ? '' : 'error';
|
|
|
+ }
|
|
|
+ if (type === 'sizeStatus' && k) {
|
|
|
+ strandFormInfo.value[k].sizeStatus = e ? '' : 'error';
|
|
|
+ }
|
|
|
};
|
|
|
|
|
|
// 新炉号
|
|
|
const newHeatNo = ref('');
|
|
|
- const rollClubOneList = ref({
|
|
|
- oneStrandNoSum: 0,
|
|
|
- twoStrandNoSum: 0,
|
|
|
- threeStrandNoSum: 0,
|
|
|
- fourStrandNoSum: 0,
|
|
|
- fiveStrandNoSum: 0,
|
|
|
- sixStrandNoSum: 0,
|
|
|
- });
|
|
|
+ const newHeatNoStatus = ref('');
|
|
|
// 确认添加定尺
|
|
|
const confirmCompensate = async () => {
|
|
|
try {
|
|
|
// 整炉添加钢坯
|
|
|
if (isAllHeat.value) {
|
|
|
if (!newHeatNo.value) {
|
|
|
+ newHeatNoStatus.value = 'error';
|
|
|
createMessage.error('整炉补录钢坯, 需输入新炉号');
|
|
|
return;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- // 获取根数
|
|
|
- const changeStrandNums = Object.keys(strandNums.value).filter((item) => strandNums.value[item]);
|
|
|
+ // 获取所有流输入的总支数
|
|
|
+ const changeStrandNums = Object.keys(strandFormInfo.value).filter((item) => strandFormInfo.value[item].sum);
|
|
|
if (changeStrandNums.length === 0) {
|
|
|
createMessage.error('请输入要增加的根数');
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+ // 判断是否输入了定尺
|
|
|
+ const noInputSize = changeStrandNums
|
|
|
+ .filter((item) => !strandFormInfo.value[item].size)
|
|
|
+ .map((item) => {
|
|
|
+ strandFormInfo.value[item].sizeStatus = 'error';
|
|
|
+ return strandFormInfo.value[item].no + '流';
|
|
|
+ });
|
|
|
+ if (noInputSize.length > 0) {
|
|
|
+ createMessage.error(`请选择${noInputSize.join(' , ')}的定尺`);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
// 整炉补录,判断支数先减去棒一支数后是否是4的倍数
|
|
|
- const allNums = changeStrandNums.reduce((pre, cur) => pre + Number(strandNums.value[cur]), 0);
|
|
|
- const rollOneList = Object.keys(rollClubOneList.value).filter((item) => rollClubOneList.value[item]);
|
|
|
- const rollOneNums = rollOneList.reduce((pre, cur) => pre + Number(rollClubOneList.value[cur]), 0);
|
|
|
+ const allNums = changeStrandNums.reduce((pre, cur) => pre + Number(strandFormInfo.value[cur].sum), 0);
|
|
|
+ const rollOneList = Object.keys(strandFormInfo.value).filter((item) => strandFormInfo.value[item].rollClubOne);
|
|
|
+ const rollOneNums = rollOneList.reduce((pre, cur) => pre + Number(strandFormInfo.value[cur].rollClubOne), 0);
|
|
|
|
|
|
let rollClubOneListParams: any[] = [];
|
|
|
if (isAllHeat.value && rollOneNums) {
|
|
@@ -352,9 +386,9 @@
|
|
|
|
|
|
rollClubOneListParams = rollOneList.map((item) => {
|
|
|
return {
|
|
|
- strandNo: staticStrandInfo[item].noNum,
|
|
|
- addSum: Number(rollClubOneList.value[item]),
|
|
|
- length: Number(strandLength.value[item]),
|
|
|
+ strandNo: strandFormInfo.value[item].no,
|
|
|
+ addSum: Number(strandFormInfo.value[item].rollClubOne),
|
|
|
+ length: Number(strandFormInfo.value[item].size),
|
|
|
};
|
|
|
});
|
|
|
}
|
|
@@ -371,11 +405,11 @@
|
|
|
};
|
|
|
|
|
|
changeStrandNums.forEach((item) => {
|
|
|
- if (strandLength.value[item]) {
|
|
|
+ if (strandFormInfo.value[item].size) {
|
|
|
params = Object.assign(params, {
|
|
|
- [item]: strandNums.value[item],
|
|
|
- [staticStrandInfo[item].size]: strandLength.value[item],
|
|
|
- [staticStrandInfo[item].no]: staticStrandInfo[item].noNum,
|
|
|
+ [item + 'Sum']: strandFormInfo.value[item].sum,
|
|
|
+ [strandFormInfo.value[item].sizeName]: strandFormInfo.value[item].size,
|
|
|
+ [item]: strandFormInfo.value[item].no,
|
|
|
});
|
|
|
}
|
|
|
});
|
|
@@ -563,8 +597,8 @@
|
|
|
|
|
|
const { start, stop } = useTimeoutFn(() => {
|
|
|
if (!props.changeShiftId) {
|
|
|
- // reload();
|
|
|
- // start();
|
|
|
+ reload();
|
|
|
+ start();
|
|
|
}
|
|
|
}, 10000);
|
|
|
|
|
@@ -661,14 +695,37 @@
|
|
|
};
|
|
|
|
|
|
// 变更定尺
|
|
|
- const strandNoSelectedOrg = ref(props.lengthOrgList);
|
|
|
- const strandNoSelected = ref(props.lengthList);
|
|
|
+ const strandNoSelectedOrg = ref({
|
|
|
+ '1': undefined,
|
|
|
+ '2': undefined,
|
|
|
+ '3': undefined,
|
|
|
+ '4': undefined,
|
|
|
+ '5': undefined,
|
|
|
+ '6': undefined,
|
|
|
+ '7': undefined,
|
|
|
+ '8': undefined,
|
|
|
+ });
|
|
|
+ const strandNoSelected = ref({
|
|
|
+ '1': undefined,
|
|
|
+ '2': undefined,
|
|
|
+ '3': undefined,
|
|
|
+ '4': undefined,
|
|
|
+ '5': undefined,
|
|
|
+ '6': undefined,
|
|
|
+ '7': undefined,
|
|
|
+ '8': undefined,
|
|
|
+ });
|
|
|
|
|
|
watch(
|
|
|
- () => props.lengthOrgList,
|
|
|
+ () => props.lengthList,
|
|
|
(val) => {
|
|
|
- strandNoSelectedOrg.value = props.lengthOrgList;
|
|
|
- strandNoSelected.value = props.lengthList;
|
|
|
+ const data = JSON.parse(val || '{}');
|
|
|
+ Object.keys(data).forEach((item) => {
|
|
|
+ strandNoSelectedOrg.value[item] = data[item];
|
|
|
+ if (!strandNoSelected.value[item]) {
|
|
|
+ strandNoSelected.value[item] = data[item];
|
|
|
+ }
|
|
|
+ });
|
|
|
},
|
|
|
{
|
|
|
deep: true,
|
|
@@ -741,6 +798,13 @@
|
|
|
},
|
|
|
];
|
|
|
}
|
|
|
+
|
|
|
+ defineExpose({
|
|
|
+ reload: () => {
|
|
|
+ stop();
|
|
|
+ reload();
|
|
|
+ },
|
|
|
+ });
|
|
|
</script>
|
|
|
|
|
|
<style scoped lang="less">
|