From 53dbfd69661fe620c6dc4c19560ee5727aaccff0 Mon Sep 17 00:00:00 2001 From: chenjiale Date: Mon, 1 Dec 2025 19:34:01 +0800 Subject: [PATCH 1/4] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B=E7=BC=96=E8=BE=91=E6=9D=83=E9=99=90=E6=8E=A7=E5=88=B6?= =?UTF-8?q?=EF=BC=8C=E9=9D=9E=E8=8D=89=E7=A8=BF=E7=89=88=E6=9C=AC=E4=B8=8D?= =?UTF-8?q?=E5=8F=AF=E4=BF=AE=E6=94=B9=E8=AE=AD=E7=BB=83=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E3=80=81=E6=B8=85=E9=99=A4=E8=AE=AD=E7=BB=83=E7=BB=93=E6=9E=9C?= =?UTF-8?q?=E5=92=8C=E7=BC=96=E8=BE=91=E6=B5=8B=E7=82=B9=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/model/train/index.vue | 60 ++++++++++++++++++++++++++++----- 1 file changed, 52 insertions(+), 8 deletions(-) diff --git a/src/views/model/train/index.vue b/src/views/model/train/index.vue index 0903593..dcec6d7 100644 --- a/src/views/model/train/index.vue +++ b/src/views/model/train/index.vue @@ -475,6 +475,10 @@ export default defineComponent({ }, 500) function handleDeleteTrainTime(index: number) { + if (!canEditModel.value) { + createMessage.warning('非草稿版本不可修改训练时间') + return + } if (!model.value?.trainTime) return // 赋值新数组,确保响应式 @@ -500,12 +504,20 @@ export default defineComponent({ updateModelInfoDebounced() } async function clearModel() { + if (!canEditModel.value) { + createMessage.warning('非草稿版本不可清除训练结果') + return + } model.value.para = null updateModelInfoDebounced() await getHistory() } async function trainModel() { + if (!canEditModel.value) { + createMessage.warning('非草稿版本不可训练模型') + return + } const modelInfo = model.value if (!modelInfo || !modelInfo.id) { console.error('模型信息不完整,无法训练') @@ -612,7 +624,6 @@ export default defineComponent({ dayjs(sorted[0].st), dayjs(sorted[sorted.length - 1].et), ] - historyTime.value = trainRange await getTestData(trainRange) } else { @@ -664,6 +675,10 @@ export default defineComponent({ } function openPointModal(index, record) { + if (!canEditModel.value) { + createMessage.warning('非草稿版本不可编辑测点参数') + return + } // 当前页 index const pageIndex = index // 全局 index @@ -672,14 +687,21 @@ export default defineComponent({ ) openEditPointModal.value = true pointEditRecord = record + const normalizeBool = (val: any) => { + if (val === true || val === '是' || val === 1 || val === '1') + return true + if (val === false || val === '否' || val === 0 || val === '0') + return false + return !!val + } editForm.value = { index: globalIndex, Upper: record?.Upper ?? '', Lower: record?.Lower ?? '', lowerBound: record?.lowerBound ?? '', upperBound: record?.upperBound ?? '', - dead: !!record?.dead, - limit: !!record?.limit, + dead: normalizeBool(record?.dead), + limit: normalizeBool(record?.limit), } } @@ -690,6 +712,10 @@ export default defineComponent({ const openEditModeModal = ref(false) function openEditMode() { + if (!canEditModel.value) { + createMessage.warning('非草稿版本不可修改模式') + return + } openEditModeModal.value = true mode.value = { alarmcondition: model.value?.alarmmodelset?.alarmcondition || '1=1', @@ -754,6 +780,10 @@ export default defineComponent({ } function openEditModel() { + if (!canEditModel.value) { + createMessage.warning('非草稿版本不可修改模型') + return + } editModelForm.value.sampling = model.value?.sampling || 0 editModelForm.value.rate = model.value?.rate || 0 editModelForm.value.selectedKeys = (model.value?.pointInfo || []).map(item => `${item.description}|${item.pointId}|${item.unit}|${item.Lower}|${item.Upper}`) @@ -765,6 +795,10 @@ export default defineComponent({ openEditModelModal.value = true } function handleEditModelOk() { + if (!canEditModel.value) { + createMessage.warning('非草稿版本不可修改模型') + return + } model.value.sampling = editModelForm.value.sampling model.value.rate = editModelForm.value.rate model.value.pointInfo = editModelForm.value.selectedKeys.map((key) => { @@ -797,6 +831,10 @@ export default defineComponent({ const isVTestVersion = computed( () => (model.value?.Cur_Version || model.value?.version) === 'v-test', ) + const canEditModel = computed(() => { + const version = selectedVersion.value || model.value?.Cur_Version || model.value?.version + return version === 'v-test' + }) const isBottomed = computed(() => model.value?.btmState === '已下装') const reportColumns = [ { title: '评估时间', dataIndex: 'assessTime' }, @@ -982,9 +1020,7 @@ export default defineComponent({ createMessage.error('创建草稿版本失败') } } - const showTrainActions = computed( - () => !isBottomed.value || isVTestVersion.value || selectedVersion.value === 'v-test', - ) + const showTrainActions = computed(() => canEditModel.value) function goAssessReport(reportId?: number | null | Event) { // 防止直接作为事件处理时收到 PointerEvent @@ -1055,6 +1091,7 @@ export default defineComponent({ createDraftVersion, goAssessReport, showTrainActions, + canEditModel, } }, }) @@ -1161,7 +1198,7 @@ export default defineComponent({ :bordered="false" style="margin-top: 16px; margin-bottom: -20px" > - + {{ model?.alarmmodelset?.alarmname || '全工况运行' }} @@ -1172,21 +1209,28 @@ export default defineComponent({ From 72c3b1f8440a2d1dad27462916b2cbfed321603c Mon Sep 17 00:00:00 2001 From: chenjiale Date: Mon, 1 Dec 2025 20:11:12 +0800 Subject: [PATCH 2/4] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B=E5=88=A0=E9=99=A4=E5=8A=9F=E8=83=BD=EF=BC=8C=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E6=A8=A1=E5=9E=8B=E5=8F=82=E6=95=B0=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/alert/model/models.ts | 3 + src/views/model/components/PointTransfer.vue | 163 +++++++++++++++ .../model/components/pointTransferHelper.ts | 26 +++ src/views/model/list/ModelCard.vue | 143 ++++++++----- src/views/model/list/step/Step3.vue | 192 ++++++------------ src/views/model/list/step/data.tsx | 48 +---- src/views/model/train/index.vue | 88 ++------ 7 files changed, 372 insertions(+), 291 deletions(-) create mode 100644 src/views/model/components/PointTransfer.vue create mode 100644 src/views/model/components/pointTransferHelper.ts diff --git a/src/api/alert/model/models.ts b/src/api/alert/model/models.ts index 90d1b33..0de2561 100644 --- a/src/api/alert/model/models.ts +++ b/src/api/alert/model/models.ts @@ -5,6 +5,7 @@ enum Api { MODEL_CARD_LIST = '/alert/model/card/list', MODEL_INFO = '/alert/model/info', MODEL_SAVE = '/alert/model/', + MODEL_DELETE = '/alert/model/', MODEL_DATA = '/alert/model/data/', CALCULATE_BACK = '/alert/model/data/calculate/', OPTIMISTIC = '/alert/optimistic', @@ -28,6 +29,8 @@ export function modelSaveApi(params?: any) { return defHttp.post({ url: Api.MODEL_SAVE, data: params }) } +export const modelDeleteApi = (id: number | string) => defHttp.delete({ url: `${Api.MODEL_DELETE}${id}` }) + export function modelDataApi(id: any, params: any) { return defHttp.get({ url: Api.MODEL_DATA + id, params }) } diff --git a/src/views/model/components/PointTransfer.vue b/src/views/model/components/PointTransfer.vue new file mode 100644 index 0000000..5e962ce --- /dev/null +++ b/src/views/model/components/PointTransfer.vue @@ -0,0 +1,163 @@ + + + diff --git a/src/views/model/components/pointTransferHelper.ts b/src/views/model/components/pointTransferHelper.ts new file mode 100644 index 0000000..763eb0f --- /dev/null +++ b/src/views/model/components/pointTransferHelper.ts @@ -0,0 +1,26 @@ +export interface PointKeyInfo { + description: string + pointId: string + unit?: string + Lower?: string + Upper?: string +} + +export function parsePointKey(key: string | number | undefined | null): PointKeyInfo { + const safeKey = key !== undefined && key !== null ? String(key) : '' + const [description = '', pointId = '', unit = '', Lower = '', Upper = ''] = safeKey.split('|') + return { description, pointId, unit, Lower, Upper } +} + +export function buildPointKeyFromInfo(info: Partial): string { + const { description = '', pointId = '', unit = '', Lower = '', Upper = '' } = info || {} + return [description, pointId, unit, Lower, Upper].join('|') +} + +export function buildPointTitle(info: PointKeyInfo, fallback: string): string { + if (info.description && info.pointId) + return `${info.description} (${info.pointId})` + if (info.description) + return info.description + return fallback +} diff --git a/src/views/model/list/ModelCard.vue b/src/views/model/list/ModelCard.vue index 4eca609..e828e6d 100644 --- a/src/views/model/list/ModelCard.vue +++ b/src/views/model/list/ModelCard.vue @@ -1,14 +1,15 @@