feature: kpi item template

This commit is contained in:
zhuyu 2025-05-21 15:56:00 +08:00
parent ae305ad1b5
commit 598424b2c5
5 changed files with 33 additions and 0 deletions

View File

@ -136,7 +136,12 @@ class Template extends Backend
$templateItem = [];
$kpiItems = json_decode($params['kpiitem'], true);
$kpiItemIds = array_column($kpiItems, 'id');
if (count($kpiItemIds) !== count(array_unique($kpiItemIds))) {
throw new Exception('指标有重复项');
}
$rateAll = 0;
foreach ($kpiItems as $kpiItem) {
$templateItem[] = [
'admin_id' => $this->auth->id,
@ -144,6 +149,10 @@ class Template extends Backend
'item_id' => $kpiItem['id'],
'rate' => $kpiItem['rate'],
];
$rateAll += $kpiItem['rate'];
}
if ($rateAll != 100) {
throw new Exception('指标权重总和必须为100');
}
Db::name('kpi_template_item')
@ -216,7 +225,12 @@ class Template extends Backend
$templateItem = [];
$kpiItems = json_decode($params['kpiitem'], true);
$kpiItemIds = array_column($kpiItems, 'id');
if (count($kpiItemIds) !== count(array_unique($kpiItemIds))) {
throw new Exception('指标有重复项');
}
$rateAll = 0;
foreach ($kpiItems as $kpiItem) {
$templateItem[] = [
'admin_id' => $this->auth->id,
@ -224,6 +238,11 @@ class Template extends Backend
'item_id' => $kpiItem['id'],
'rate' => $kpiItem['rate'],
];
$rateAll += $kpiItem['rate'];
}
if ($rateAll != 100) {
throw new Exception('指标权重总和必须为100');
}
Db::name('kpi_template_item')

View File

@ -8,6 +8,7 @@ return [
'Name' => '名称',
'Desc' => '描述',
'Score' => '单个绩点分',
'Max_score' => '最高得分上限',
'Create_time' => '创建时间',
'Update_time' => '编辑时间'
];

View File

@ -24,6 +24,12 @@
<input id="c-score" data-rule="required" class="form-control" name="row[score]" type="number" value="0">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Max_score')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-max_score" data-rule="required" class="form-control" name="row[max_score]" type="number" value="0">
</div>
</div>
<div class="form-group row">
<div class="col-xs-12">
<table class="table fieldlist" data-template="kpiitemtpl" data-name="row[kpiitem]" id="fieldlist-table">

View File

@ -24,6 +24,12 @@
<input id="c-score" data-rule="required" class="form-control" name="row[score]" type="number" value="{$row.score|htmlentities}">
</div>
</div>
<div class="form-group">
<label class="control-label col-xs-12 col-sm-2">{:__('Max_score')}:</label>
<div class="col-xs-12 col-sm-8">
<input id="c-max_score" data-rule="required" class="form-control" name="row[max_score]" type="number" value="{$row.max_score|htmlentities}">
</div>
</div>
<div class="form-group row">
<div class="col-xs-12">
<table class="table fieldlist" data-template="kpiitemtpl" data-name="row[kpiitem]" id="fieldlist-table">

View File

@ -42,6 +42,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
}
},
{field: 'score', title: __('Score')},
{field: 'max_score', title: __('Max_score')},
{field: 'create_time', title: __('Create_time'), operate:'RANGE', addclass:'datetimerange', autocomplete:false},
{field: 'update_time', title: __('Update_time'), operate:'RANGE', addclass:'datetimerange', autocomplete:false},
{field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}