|
@@ -1,167 +1,167 @@
|
|
<template>
|
|
<template>
|
|
<div class="indicator-edit">
|
|
<div class="indicator-edit">
|
|
- <el-dialog v-model="visible" :title="isEdit ? '编辑指标' : '新增指标'" width="800px" :close-on-click-modal="false" destroy-on-close>
|
|
|
|
|
|
+ <el-dialog v-model="visible" :title="isEdit ? t('message.dateCenter.indicator.edit.dialogTitleEdit') : t('message.dateCenter.indicator.edit.dialogTitleAdd')" width="800px" :close-on-click-modal="false" destroy-on-close>
|
|
<div v-if="visible">
|
|
<div v-if="visible">
|
|
<el-tabs v-model="activeTab">
|
|
<el-tabs v-model="activeTab">
|
|
- <el-tab-pane label="基本信息" name="base">
|
|
|
|
- <el-form ref="formRef" :model="form" :rules="rules" label-width="110px" class="pt10">
|
|
|
|
|
|
+ <el-tab-pane :label="t('message.dateCenter.indicator.edit.tabs.base')" name="base">
|
|
|
|
+ <el-form ref="formRef" :model="form" :rules="rules" label-width="150px" class="pt10">
|
|
<div class="row">
|
|
<div class="row">
|
|
- <el-form-item label="指标编码" prop="code" class="flex1">
|
|
|
|
- <el-input v-model.trim="form.code" :disabled="isEdit" placeholder="请输入唯一编码,如 IND001" clearable />
|
|
|
|
|
|
+ <el-form-item :label="t('message.dateCenter.indicator.edit.labels.code')" prop="code" class="flex1">
|
|
|
|
+ <el-input v-model.trim="form.code" :disabled="isEdit" :placeholder="t('message.dateCenter.indicator.edit.placeholders.inputCode')" clearable />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="指标名称" prop="name" class="flex1">
|
|
|
|
- <el-input v-model.trim="form.name" placeholder="请输入指标名称" clearable />
|
|
|
|
|
|
+ <el-form-item :label="t('message.dateCenter.indicator.edit.labels.name')" prop="name" class="flex1">
|
|
|
|
+ <el-input v-model.trim="form.name" :placeholder="t('message.dateCenter.indicator.edit.placeholders.inputName')" clearable />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="row">
|
|
- <el-form-item label="指标类型" prop="type" class="flex1">
|
|
|
|
- <el-cascader :options="typeOptions" :props="{ checkStrictly: true, emitPath: false, value: 'code', label: 'name' }" placeholder="请选择指标类型" clearable class="w100" v-model="form.type">
|
|
|
|
|
|
+ <el-form-item :label="t('message.dateCenter.indicator.edit.labels.type')" prop="type" class="flex1">
|
|
|
|
+ <el-cascader :options="typeOptions" :props="{ checkStrictly: true, emitPath: false, value: 'code', label: 'name' }" :placeholder="t('message.dateCenter.indicator.edit.placeholders.selectType')" clearable class="w100" v-model="form.type">
|
|
<template #default="{ node, data }">
|
|
<template #default="{ node, data }">
|
|
<span>{{ data.name }}</span>
|
|
<span>{{ data.name }}</span>
|
|
<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
|
|
<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
|
|
</template>
|
|
</template>
|
|
</el-cascader>
|
|
</el-cascader>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="单位" prop="unit" class="flex1">
|
|
|
|
- <el-input v-model.trim="form.unit" placeholder="请输入计量单位(如 mg/L、%)" clearable />
|
|
|
|
|
|
+ <el-form-item :label="t('message.dateCenter.indicator.edit.labels.unit')" prop="unit" class="flex1">
|
|
|
|
+ <el-input v-model.trim="form.unit" :placeholder="t('message.dateCenter.indicator.edit.placeholders.inputUnit')" clearable />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="row">
|
|
- <el-form-item label="数据建模KEY" prop="dataTemplateKey" class="flex1">
|
|
|
|
- <el-input v-model.trim="form.dataTemplateKey" placeholder="请输入数据建模KEY" clearable />
|
|
|
|
|
|
+ <el-form-item :label="t('message.dateCenter.indicator.edit.labels.dataTemplateKey')" prop="dataTemplateKey" class="flex1">
|
|
|
|
+ <el-input v-model.trim="form.dataTemplateKey" :placeholder="t('message.dateCenter.indicator.edit.placeholders.inputDataTemplateKey')" clearable />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="计算策略" prop="computeStrategy" class="flex1">
|
|
|
|
- <el-select v-model="form.computeStrategy" placeholder="请选择计算策略" clearable style="width: 100%">
|
|
|
|
- <el-option label="聚合计算" value="aggregation" />
|
|
|
|
- <el-option label="累计计算" value="accumulation" />
|
|
|
|
- <el-option label="数学计算" value="mathematical" />
|
|
|
|
|
|
+ <el-form-item :label="t('message.dateCenter.indicator.edit.labels.computeStrategy')" prop="computeStrategy" class="flex1">
|
|
|
|
+ <el-select v-model="form.computeStrategy" :placeholder="t('message.dateCenter.indicator.edit.placeholders.selectComputeStrategy')" clearable style="width: 100%">
|
|
|
|
+ <el-option :label="t('message.dateCenter.indicator.edit.computeStrategies.aggregation')" value="aggregation" />
|
|
|
|
+ <el-option :label="t('message.dateCenter.indicator.edit.computeStrategies.accumulation')" value="accumulation" />
|
|
|
|
+ <el-option :label="t('message.dateCenter.indicator.edit.computeStrategies.mathematical')" value="mathematical" />
|
|
</el-select>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="row">
|
|
- <el-form-item label="计算模式" prop="calculationMode" class="flex1">
|
|
|
|
|
|
+ <el-form-item :label="t('message.dateCenter.indicator.edit.labels.calculationMode')" prop="calculationMode" class="flex1">
|
|
<el-radio-group v-model="form.calculationMode">
|
|
<el-radio-group v-model="form.calculationMode">
|
|
- <el-radio label="demand">按需计算</el-radio>
|
|
|
|
- <el-radio label="schedule">定时计算</el-radio>
|
|
|
|
|
|
+ <el-radio label="demand">{{ t('message.dateCenter.indicator.edit.calculationModes.demand') }}</el-radio>
|
|
|
|
+ <el-radio label="schedule">{{ t('message.dateCenter.indicator.edit.calculationModes.schedule') }}</el-radio>
|
|
</el-radio-group>
|
|
</el-radio-group>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item v-if="form.calculationMode === 'schedule'" label="计算周期" prop="calculationSchedule" class="flex1">
|
|
|
|
- <el-input v-model.trim="form.calculationSchedule" placeholder="请输入cron或表达式" clearable />
|
|
|
|
|
|
+ <el-form-item v-if="form.calculationMode === 'schedule'" :label="t('message.dateCenter.indicator.edit.labels.calculationSchedule')" prop="calculationSchedule" class="flex1">
|
|
|
|
+ <el-input v-model.trim="form.calculationSchedule" :placeholder="t('message.dateCenter.indicator.edit.placeholders.inputSchedule')" clearable />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</div>
|
|
</div>
|
|
- <el-form-item label="指标描述" prop="description">
|
|
|
|
- <el-input v-model.trim="form.description" type="textarea" :rows="3" placeholder="请输入指标描述" />
|
|
|
|
|
|
+ <el-form-item :label="t('message.dateCenter.indicator.edit.labels.description')" prop="description">
|
|
|
|
+ <el-input v-model.trim="form.description" type="textarea" :rows="3" :placeholder="t('message.dateCenter.indicator.edit.placeholders.inputDescription')" />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</el-form>
|
|
</el-form>
|
|
</el-tab-pane>
|
|
</el-tab-pane>
|
|
|
|
|
|
- <el-tab-pane label="计算公式" name="formula">
|
|
|
|
- <div class="section-title">计算公式</div>
|
|
|
|
- <el-input v-model="form.formula" type="textarea" :rows="4" placeholder="请输入计算公式,例如:COD = (V1 - V2) × C × 8 × 1000 / V" />
|
|
|
|
- <div class="mt10 text-gray">支持数学运算符(+、-、×、÷)、括号、函数等,系统会自动识别公式中的参数</div>
|
|
|
|
|
|
+ <el-tab-pane :label="t('message.dateCenter.indicator.edit.tabs.formula')" name="formula">
|
|
|
|
+ <div class="section-title">{{ t('message.dateCenter.indicator.edit.labels.formula') }}</div>
|
|
|
|
+ <el-input v-model="form.formula" type="textarea" :rows="4" :placeholder="t('message.dateCenter.indicator.edit.placeholders.inputFormula')" />
|
|
|
|
+ <div class="mt10 text-gray">{{ t('message.dateCenter.indicator.edit.placeholders.inputFormula') }}</div>
|
|
|
|
|
|
<div class="section-title mt20 flex-between">
|
|
<div class="section-title mt20 flex-between">
|
|
- <span>公式参数</span>
|
|
|
|
- <el-button type="success" @click="openParamDialog()">+ 添加参数</el-button>
|
|
|
|
|
|
+ <span>{{ t('message.dateCenter.indicator.edit.labels.formulaParams') }}</span>
|
|
|
|
+ <el-button type="success" @click="openParamDialog()">+ {{ t('message.dateCenter.indicator.edit.buttons.addParam') }}</el-button>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<el-table :data="form.formulaParams" border style="width: 100%">
|
|
<el-table :data="form.formulaParams" border style="width: 100%">
|
|
- <el-table-column type="index" label="序号" width="60" align="center" />
|
|
|
|
- <el-table-column label="参数名称" prop="name" align="center" />
|
|
|
|
- <el-table-column label="参数编码" prop="code" align="center" />
|
|
|
|
- <el-table-column label="参数值" prop="values" align="center" />
|
|
|
|
- <el-table-column label="参数描述" prop="description" align="center" />
|
|
|
|
- <el-table-column label="操作" width="120" align="center">
|
|
|
|
|
|
+ <el-table-column type="index" :label="t('message.dateCenter.indicator.edit.table.index')" width="60" align="center" />
|
|
|
|
+ <el-table-column :label="t('message.dateCenter.indicator.edit.table.paramName')" prop="name" align="center" />
|
|
|
|
+ <el-table-column :label="t('message.dateCenter.indicator.edit.table.paramCode')" prop="code" align="center" />
|
|
|
|
+ <el-table-column :label="t('message.dateCenter.indicator.edit.table.paramValue')" prop="values" align="center" />
|
|
|
|
+ <el-table-column :label="t('message.dateCenter.indicator.edit.table.paramDesc')" prop="description" align="center" />
|
|
|
|
+ <el-table-column :label="t('message.dateCenter.indicator.columns.action')" width="120" align="center">
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
- <el-button size="small" text type="primary" @click="openParamDialog(scope.row, scope.$index)">编辑</el-button>
|
|
|
|
- <el-button size="small" text type="danger" @click="removeParam(scope.$index)">删除</el-button>
|
|
|
|
|
|
+ <el-button size="small" text type="primary" @click="openParamDialog(scope.row, scope.$index)">{{ t('message.dateCenter.indicator.actions.edit') }}</el-button>
|
|
|
|
+ <el-button size="small" text type="danger" @click="removeParam(scope.$index)">{{ t('message.dateCenter.indicator.actions.delete') }}</el-button>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
</el-table>
|
|
</el-table>
|
|
- <div v-if="!form.formulaParams.length" class="empty-tip">暂无参数,请添加公式参数</div>
|
|
|
|
|
|
+ <div v-if="!form.formulaParams.length" class="empty-tip">{{ t('message.dateCenter.indicator.edit.emptyTips.params') }}</div>
|
|
</el-tab-pane>
|
|
</el-tab-pane>
|
|
|
|
|
|
- <el-tab-pane label="维度设置" name="dimension">
|
|
|
|
|
|
+ <el-tab-pane :label="t('message.dateCenter.indicator.edit.tabs.dimension')" name="dimension">
|
|
<div class="section-title flex-between">
|
|
<div class="section-title flex-between">
|
|
- <span>维度列表</span>
|
|
|
|
- <el-button type="success" @click="openDimDialog()">+ 添加维度</el-button>
|
|
|
|
|
|
+ <span>{{ t('message.dateCenter.indicator.edit.labels.dimensions') }}</span>
|
|
|
|
+ <el-button type="success" @click="openDimDialog()">+ {{ t('message.dateCenter.indicator.edit.buttons.addDimension') }}</el-button>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<el-table :data="form.dimensions" border style="width: 100%">
|
|
<el-table :data="form.dimensions" border style="width: 100%">
|
|
- <el-table-column type="index" label="序号" width="60" align="center" />
|
|
|
|
- <el-table-column label="维度名称" prop="name" align="center" />
|
|
|
|
- <el-table-column label="维度标识" prop="code" align="center" />
|
|
|
|
- <el-table-column label="维度值类型" prop="valueType" align="center">
|
|
|
|
|
|
+ <el-table-column type="index" :label="t('message.dateCenter.indicator.edit.table.index')" width="60" align="center" />
|
|
|
|
+ <el-table-column :label="t('message.dateCenter.indicator.edit.labels.dimensionName')" prop="name" align="center" />
|
|
|
|
+ <el-table-column :label="t('message.dateCenter.indicator.edit.labels.dimensionCode')" prop="code" align="center" />
|
|
|
|
+ <el-table-column :label="t('message.dateCenter.indicator.edit.labels.dimensionValueType')" prop="valueType" align="center">
|
|
<template #default="scope">{{ formatValueType(scope.row.valueType) }}</template>
|
|
<template #default="scope">{{ formatValueType(scope.row.valueType) }}</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column label="维度描述" prop="description" align="center" />
|
|
|
|
- <el-table-column label="操作" width="120" align="center">
|
|
|
|
|
|
+ <el-table-column :label="t('message.dateCenter.indicator.edit.labels.dimensionDescription')" prop="description" align="center" />
|
|
|
|
+ <el-table-column :label="t('message.dateCenter.indicator.columns.action')" width="120" align="center">
|
|
<template #default="scope">
|
|
<template #default="scope">
|
|
- <el-button size="small" text type="primary" @click="openDimDialog(scope.row, scope.$index)">编辑</el-button>
|
|
|
|
- <el-button size="small" text type="danger" @click="removeDim(scope.$index)">删除</el-button>
|
|
|
|
|
|
+ <el-button size="small" text type="primary" @click="openDimDialog(scope.row, scope.$index)">{{ t('message.dateCenter.indicator.actions.edit') }}</el-button>
|
|
|
|
+ <el-button size="small" text type="danger" @click="removeDim(scope.$index)">{{ t('message.dateCenter.indicator.actions.delete') }}</el-button>
|
|
</template>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
</el-table>
|
|
</el-table>
|
|
- <div v-if="!form.dimensions.length" class="empty-tip">暂无维度,请添加分析维度</div>
|
|
|
|
|
|
+ <div v-if="!form.dimensions.length" class="empty-tip">{{ t('message.dateCenter.indicator.edit.emptyTips.dimensions') }}</div>
|
|
</el-tab-pane>
|
|
</el-tab-pane>
|
|
</el-tabs>
|
|
</el-tabs>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<template #footer>
|
|
<template #footer>
|
|
<span class="dialog-footer">
|
|
<span class="dialog-footer">
|
|
- <el-button @click="onCancel">取消</el-button>
|
|
|
|
- <el-button type="primary" @click="onSave">保存</el-button>
|
|
|
|
|
|
+ <el-button @click="onCancel">{{ t('message.dateCenter.indicator.edit.buttons.cancel') }}</el-button>
|
|
|
|
+ <el-button type="primary" @click="onSave">{{ t('message.dateCenter.indicator.edit.buttons.save') }}</el-button>
|
|
</span>
|
|
</span>
|
|
</template>
|
|
</template>
|
|
</el-dialog>
|
|
</el-dialog>
|
|
|
|
|
|
<!-- 添加/编辑 参数 -->
|
|
<!-- 添加/编辑 参数 -->
|
|
- <el-dialog v-model="paramDialog.visible" title="添加参数" width="520px" :close-on-click-modal="false">
|
|
|
|
- <el-form :model="paramDialog.form" ref="paramFormRef" :rules="paramRules" label-width="90px">
|
|
|
|
- <el-form-item label="参数名称" prop="name">
|
|
|
|
- <el-input v-model.trim="paramDialog.form.name" placeholder="请输入参数名称" />
|
|
|
|
|
|
+ <el-dialog v-model="paramDialog.visible" :title="t('message.dateCenter.indicator.edit.dialogs.addParam')" width="520px" :close-on-click-modal="false">
|
|
|
|
+ <el-form :model="paramDialog.form" ref="paramFormRef" :rules="paramRules" label-width="130px">
|
|
|
|
+ <el-form-item :label="t('message.dateCenter.indicator.edit.table.paramName')" prop="name">
|
|
|
|
+ <el-input v-model.trim="paramDialog.form.name" :placeholder="t('message.dateCenter.indicator.edit.placeholders.inputParamName')" />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="参数编码" prop="code">
|
|
|
|
- <el-input v-model.trim="paramDialog.form.code" placeholder="请输入参数编码" />
|
|
|
|
|
|
+ <el-form-item :label="t('message.dateCenter.indicator.edit.table.paramCode')" prop="code">
|
|
|
|
+ <el-input v-model.trim="paramDialog.form.code" :placeholder="t('message.dateCenter.indicator.edit.placeholders.inputParamCode')" />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="参数值" prop="values">
|
|
|
|
- <el-input v-model.trim="paramDialog.form.values" placeholder="请输入参数值" />
|
|
|
|
|
|
+ <el-form-item :label="t('message.dateCenter.indicator.edit.table.paramValue')" prop="values">
|
|
|
|
+ <el-input v-model.trim="paramDialog.form.values" :placeholder="t('message.dateCenter.indicator.edit.placeholders.inputParamValue')" />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="参数描述" prop="description">
|
|
|
|
- <el-input v-model.trim="paramDialog.form.description" type="textarea" placeholder="请输入参数描述" />
|
|
|
|
|
|
+ <el-form-item :label="t('message.dateCenter.indicator.edit.table.paramDesc')" prop="description">
|
|
|
|
+ <el-input v-model.trim="paramDialog.form.description" type="textarea" :placeholder="t('message.dateCenter.indicator.edit.placeholders.inputParamDesc')" />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</el-form>
|
|
</el-form>
|
|
<template #footer>
|
|
<template #footer>
|
|
- <el-button @click="paramDialog.visible = false">取消</el-button>
|
|
|
|
- <el-button type="primary" @click="confirmParam">添加</el-button>
|
|
|
|
|
|
+ <el-button @click="paramDialog.visible = false">{{ t('message.dateCenter.indicator.edit.buttons.cancel') }}</el-button>
|
|
|
|
+ <el-button type="primary" @click="confirmParam">{{ t('message.dateCenter.indicator.edit.buttons.add') }}</el-button>
|
|
</template>
|
|
</template>
|
|
</el-dialog>
|
|
</el-dialog>
|
|
|
|
|
|
<!-- 添加/编辑 维度 -->
|
|
<!-- 添加/编辑 维度 -->
|
|
- <el-dialog v-model="dimDialog.visible" title="添加维度" width="520px" :close-on-click-modal="false">
|
|
|
|
- <el-form :model="dimDialog.form" ref="dimFormRef" :rules="dimRules" label-width="100px">
|
|
|
|
- <el-form-item label="维度名称" prop="name">
|
|
|
|
- <el-input v-model.trim="dimDialog.form.name" placeholder="请输入维度名称" />
|
|
|
|
|
|
+ <el-dialog v-model="dimDialog.visible" :title="t('message.dateCenter.indicator.edit.dialogs.addDimension')" width="520px" :close-on-click-modal="false">
|
|
|
|
+ <el-form :model="dimDialog.form" ref="dimFormRef" :rules="dimRules" label-width="160px">
|
|
|
|
+ <el-form-item :label="t('message.dateCenter.indicator.edit.labels.dimensionName')" prop="name">
|
|
|
|
+ <el-input v-model.trim="dimDialog.form.name" :placeholder="t('message.dateCenter.indicator.edit.placeholders.inputDimName')" />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="维度标识" prop="code">
|
|
|
|
- <el-input v-model.trim="dimDialog.form.code" placeholder="请输入维度标识,如 time, location" />
|
|
|
|
|
|
+ <el-form-item :label="t('message.dateCenter.indicator.edit.labels.dimensionCode')" prop="code">
|
|
|
|
+ <el-input v-model.trim="dimDialog.form.code" :placeholder="t('message.dateCenter.indicator.edit.placeholders.inputDimCode')" />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="维度值类型" prop="valueType">
|
|
|
|
- <el-select v-model="dimDialog.form.valueType" placeholder="请选择值类型" style="width: 100%">
|
|
|
|
- <el-option label="整数" value="int" />
|
|
|
|
- <el-option label="长整数" value="long" />
|
|
|
|
- <el-option label="双精度浮点数" value="double" />
|
|
|
|
- <el-option label="字符串" value="text" />
|
|
|
|
- <el-option label="日期" value="date" />
|
|
|
|
|
|
+ <el-form-item :label="t('message.dateCenter.indicator.edit.labels.dimensionValueType')" prop="valueType">
|
|
|
|
+ <el-select v-model="dimDialog.form.valueType" :placeholder="t('message.dateCenter.indicator.edit.placeholders.selectDimValueType')" style="width: 100%">
|
|
|
|
+ <el-option :label="t('message.dateCenter.indicator.edit.valueTypes.int')" value="int" />
|
|
|
|
+ <el-option :label="t('message.dateCenter.indicator.edit.valueTypes.long')" value="long" />
|
|
|
|
+ <el-option :label="t('message.dateCenter.indicator.edit.valueTypes.double')" value="double" />
|
|
|
|
+ <el-option :label="t('message.dateCenter.indicator.edit.valueTypes.text')" value="text" />
|
|
|
|
+ <el-option :label="t('message.dateCenter.indicator.edit.valueTypes.date')" value="date" />
|
|
</el-select>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="维度描述" prop="description">
|
|
|
|
- <el-input v-model.trim="dimDialog.form.description" type="textarea" placeholder="请输入维度描述" />
|
|
|
|
|
|
+ <el-form-item :label="t('message.dateCenter.indicator.edit.labels.dimensionDescription')" prop="description">
|
|
|
|
+ <el-input v-model.trim="dimDialog.form.description" type="textarea" :placeholder="t('message.dateCenter.indicator.edit.placeholders.inputDimDesc')" />
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</el-form>
|
|
</el-form>
|
|
<template #footer>
|
|
<template #footer>
|
|
- <el-button @click="dimDialog.visible = false">取消</el-button>
|
|
|
|
- <el-button type="primary" @click="confirmDim">添加</el-button>
|
|
|
|
|
|
+ <el-button @click="dimDialog.visible = false">{{ t('message.dateCenter.indicator.edit.buttons.cancel') }}</el-button>
|
|
|
|
+ <el-button type="primary" @click="confirmDim">{{ t('message.dateCenter.indicator.edit.buttons.add') }}</el-button>
|
|
</template>
|
|
</template>
|
|
</el-dialog>
|
|
</el-dialog>
|
|
</div>
|
|
</div>
|
|
@@ -169,10 +169,13 @@
|
|
|
|
|
|
<script lang="ts" setup>
|
|
<script lang="ts" setup>
|
|
import { reactive, ref } from "vue";
|
|
import { reactive, ref } from "vue";
|
|
|
|
+import { useI18n } from "vue-i18n";
|
|
import { ElMessage } from "element-plus";
|
|
import { ElMessage } from "element-plus";
|
|
import api from "/@/api/datahub";
|
|
import api from "/@/api/datahub";
|
|
import apiSystem from "/@/api/system";
|
|
import apiSystem from "/@/api/system";
|
|
|
|
|
|
|
|
+const { t } = useI18n();
|
|
|
|
+
|
|
const emit = defineEmits(["update"]);
|
|
const emit = defineEmits(["update"]);
|
|
|
|
|
|
const visible = ref(false);
|
|
const visible = ref(false);
|
|
@@ -199,12 +202,12 @@ const form = reactive({
|
|
});
|
|
});
|
|
|
|
|
|
const rules = {
|
|
const rules = {
|
|
- code: [{ required: true, message: "请输入指标编码", trigger: "blur" }],
|
|
|
|
- name: [{ required: true, message: "请输入指标名称", trigger: "blur" }],
|
|
|
|
- type: [{ required: true, message: "请选择指标类型", trigger: "change" }],
|
|
|
|
- unit: [{ required: true, message: "请输入单位", trigger: "blur" }],
|
|
|
|
- calculationMode: [{ required: true, message: "请选择计算模式", trigger: "change" }],
|
|
|
|
- calculationSchedule: [{ validator: (_: any, v: string, cb: any) => (form.calculationMode === "schedule" && !v ? cb(new Error("请输入计算周期")) : cb()), trigger: "blur" }],
|
|
|
|
|
|
+ code: [{ required: true, message: t('message.dateCenter.indicator.edit.placeholders.inputCode'), trigger: "blur" }],
|
|
|
|
+ name: [{ required: true, message: t('message.dateCenter.indicator.edit.placeholders.inputName'), trigger: "blur" }],
|
|
|
|
+ type: [{ required: true, message: t('message.dateCenter.indicator.edit.placeholders.selectType'), trigger: "change" }],
|
|
|
|
+ unit: [{ required: true, message: t('message.dateCenter.indicator.edit.placeholders.inputUnit'), trigger: "blur" }],
|
|
|
|
+ calculationMode: [{ required: true, message: t('message.dateCenter.indicator.edit.labels.calculationMode'), trigger: "change" }],
|
|
|
|
+ calculationSchedule: [{ validator: (_: any, v: string, cb: any) => (form.calculationMode === "schedule" && !v ? cb(new Error(t('message.dateCenter.indicator.edit.placeholders.inputSchedule'))) : cb()), trigger: "blur" }],
|
|
};
|
|
};
|
|
|
|
|
|
const typeOptions = ref([]);
|
|
const typeOptions = ref([]);
|
|
@@ -298,7 +301,7 @@ function onSave() {
|
|
const payload = JSON.parse(JSON.stringify(form));
|
|
const payload = JSON.parse(JSON.stringify(form));
|
|
const apiFn = isEdit.value ? api.indicator.edit : api.indicator.add;
|
|
const apiFn = isEdit.value ? api.indicator.edit : api.indicator.add;
|
|
apiFn(payload).then(() => {
|
|
apiFn(payload).then(() => {
|
|
- ElMessage.success("保存成功");
|
|
|
|
|
|
+ ElMessage.success(t('message.dateCenter.indicator.edit.messages.saved'));
|
|
visible.value = false;
|
|
visible.value = false;
|
|
emit("update");
|
|
emit("update");
|
|
});
|
|
});
|
|
@@ -355,7 +358,7 @@ function removeDim(i: number) {
|
|
}
|
|
}
|
|
|
|
|
|
function formatValueType(v: string) {
|
|
function formatValueType(v: string) {
|
|
- const map: any = { string: "字符串", number: "数值", boolean: "布尔", datetime: "时间" };
|
|
|
|
|
|
+ const map: any = { string: t('message.dateCenter.indicator.edit.valueTypes.string'), number: t('message.dateCenter.indicator.edit.valueTypes.number'), boolean: t('message.dateCenter.indicator.edit.valueTypes.boolean'), datetime: t('message.dateCenter.indicator.edit.valueTypes.datetime') };
|
|
return map[v] || v || "-";
|
|
return map[v] || v || "-";
|
|
}
|
|
}
|
|
|
|
|