Просмотр исходного кода

业务健康度相关代码生成

wukai 11 месяцев назад
Родитель
Сommit
c89672c522

+ 19 - 4
src/api/hl/bm.js

@@ -51,7 +51,7 @@ export function selectBm(modelId) {
     })
 }
 
-export function addBmModel(modelId,query) {
+export function addBmModel(modelId, query) {
     return request({
         url: '/hl/bm/obj/add/' + modelId,
         method: 'get',
@@ -60,7 +60,7 @@ export function addBmModel(modelId,query) {
 }
 
 // 一健巡检--模型列表
-export function getCheckList(){
+export function getCheckList() {
     return request({
         url: '/hl/bm/check/list',
         method: 'get'
@@ -68,10 +68,25 @@ export function getCheckList(){
 }
 
 // 一健巡检--按模型ID巡检
-export function getCheckModel(modelId){
+export function getCheckModel(modelId) {
     return request({
-        url: '/hl/bm/check/'+modelId,
+        url: '/hl/bm/check/' + modelId,
         method: 'get'
     })
 }
 
+
+// 日健康度历史记录
+export function dayHistory() {
+    return request({
+        url: 'hl/bm/day/history',
+        method: 'get',
+    })
+}// 健康度历史记录
+export function timeHistory() {
+    return request({
+        url: 'hl/bm/time/history',
+        method: 'get',
+    })
+}
+

+ 44 - 0
src/api/hl/hc.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询模型健康度分类列表
+export function listHc(query) {
+    return request({
+        url: '/hl/hc/list',
+        method: 'get',
+        params: query
+    })
+}
+
+// 查询模型健康度分类详细
+export function getHc(hlClassId) {
+    return request({
+        url: '/hl/hc/' + hlClassId,
+        method: 'get'
+    })
+}
+
+// 新增模型健康度分类
+export function addHc(data) {
+    return request({
+        url: '/hl/hc',
+        method: 'post',
+        data: data
+    })
+}
+
+// 修改模型健康度分类
+export function updateHc(data) {
+    return request({
+        url: '/hl/hc',
+        method: 'put',
+        data: data
+    })
+}
+
+// 删除模型健康度分类
+export function delHc(hlClassId) {
+    return request({
+        url: '/hl/hc/' + hlClassId,
+        method: 'delete'
+    })
+}

+ 44 - 0
src/api/hl/hcs.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询模型健康度分类得分列表
+export function listHcs(query) {
+    return request({
+        url: '/hl/hcs/list',
+        method: 'get',
+        params: query
+    })
+}
+
+// 查询模型健康度分类得分详细
+export function getHcs(scoreClassId) {
+    return request({
+        url: '/hl/hcs/' + scoreClassId,
+        method: 'get'
+    })
+}
+
+// 新增模型健康度分类得分
+export function addHcs(data) {
+    return request({
+        url: '/hl/hcs',
+        method: 'post',
+        data: data
+    })
+}
+
+// 修改模型健康度分类得分
+export function updateHcs(data) {
+    return request({
+        url: '/hl/hcs',
+        method: 'put',
+        data: data
+    })
+}
+
+// 删除模型健康度分类得分
+export function delHcs(scoreClassId) {
+    return request({
+        url: '/hl/hcs/' + scoreClassId,
+        method: 'delete'
+    })
+}

+ 44 - 0
src/api/hl/hm.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询业务模型健康度指标列表
+export function listHm(query) {
+    return request({
+        url: '/hl/hm/list',
+        method: 'get',
+        params: query
+    })
+}
+
+// 查询业务模型健康度指标详细
+export function getHm(hlMetricsId) {
+    return request({
+        url: '/hl/hm/' + hlMetricsId,
+        method: 'get'
+    })
+}
+
+// 新增业务模型健康度指标
+export function addHm(data) {
+    return request({
+        url: '/hl/hm',
+        method: 'post',
+        data: data
+    })
+}
+
+// 修改业务模型健康度指标
+export function updateHm(data) {
+    return request({
+        url: '/hl/hm',
+        method: 'put',
+        data: data
+    })
+}
+
+// 删除业务模型健康度指标
+export function delHm(hlMetricsId) {
+    return request({
+        url: '/hl/hm/' + hlMetricsId,
+        method: 'delete'
+    })
+}

+ 44 - 0
src/api/hl/hms.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询业务模型健康度指标得分列表
+export function listHms(query) {
+    return request({
+        url: '/hl/hms/list',
+        method: 'get',
+        params: query
+    })
+}
+
+// 查询业务模型健康度指标得分详细
+export function getHms(scoreMetricsId) {
+    return request({
+        url: '/hl/hms/' + scoreMetricsId,
+        method: 'get'
+    })
+}
+
+// 新增业务模型健康度指标得分
+export function addHms(data) {
+    return request({
+        url: '/hl/hms',
+        method: 'post',
+        data: data
+    })
+}
+
+// 修改业务模型健康度指标得分
+export function updateHms(data) {
+    return request({
+        url: '/hl/hms',
+        method: 'put',
+        data: data
+    })
+}
+
+// 删除业务模型健康度指标得分
+export function delHms(scoreMetricsId) {
+    return request({
+        url: '/hl/hms/' + scoreMetricsId,
+        method: 'delete'
+    })
+}

+ 44 - 0
src/api/hl/hmsd.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询业务模型健康度得分指标明细列表
+export function listHmsd(query) {
+    return request({
+        url: '/hl/hmsd/list',
+        method: 'get',
+        params: query
+    })
+}
+
+// 查询业务模型健康度得分指标明细详细
+export function getHmsd(scoreDetailId) {
+    return request({
+        url: '/hl/hmsd/' + scoreDetailId,
+        method: 'get'
+    })
+}
+
+// 新增业务模型健康度得分指标明细
+export function addHmsd(data) {
+    return request({
+        url: '/hl/hmsd',
+        method: 'post',
+        data: data
+    })
+}
+
+// 修改业务模型健康度得分指标明细
+export function updateHmsd(data) {
+    return request({
+        url: '/hl/hmsd',
+        method: 'put',
+        data: data
+    })
+}
+
+// 删除业务模型健康度得分指标明细
+export function delHmsd(scoreDetailId) {
+    return request({
+        url: '/hl/hmsd/' + scoreDetailId,
+        method: 'delete'
+    })
+}

+ 44 - 0
src/api/hl/ho.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询模型健康度对象列表
+export function listHo(query) {
+    return request({
+        url: '/hl/ho/list',
+        method: 'get',
+        params: query
+    })
+}
+
+// 查询模型健康度对象详细
+export function getHo(hlObjId) {
+    return request({
+        url: '/hl/ho/' + hlObjId,
+        method: 'get'
+    })
+}
+
+// 新增模型健康度对象
+export function addHo(data) {
+    return request({
+        url: '/hl/ho',
+        method: 'post',
+        data: data
+    })
+}
+
+// 修改模型健康度对象
+export function updateHo(data) {
+    return request({
+        url: '/hl/ho',
+        method: 'put',
+        data: data
+    })
+}
+
+// 删除模型健康度对象
+export function delHo(hlObjId) {
+    return request({
+        url: '/hl/ho/' + hlObjId,
+        method: 'delete'
+    })
+}

+ 44 - 0
src/api/hl/hs.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询健康度分数记录列表
+export function listHs(query) {
+    return request({
+        url: '/hl/hs/list',
+        method: 'get',
+        params: query
+    })
+}
+
+// 查询健康度分数记录详细
+export function getHs(hlScoreId) {
+    return request({
+        url: '/hl/hs/' + hlScoreId,
+        method: 'get'
+    })
+}
+
+// 新增健康度分数记录
+export function addHs(data) {
+    return request({
+        url: '/hl/hs',
+        method: 'post',
+        data: data
+    })
+}
+
+// 修改健康度分数记录
+export function updateHs(data) {
+    return request({
+        url: '/hl/hs',
+        method: 'put',
+        data: data
+    })
+}
+
+// 删除健康度分数记录
+export function delHs(hlScoreId) {
+    return request({
+        url: '/hl/hs/' + hlScoreId,
+        method: 'delete'
+    })
+}

+ 2 - 3
src/views/hl/bm/index.vue

@@ -87,9 +87,8 @@
 
 <script setup name="Bm">
 
-import {addBm, delBm, listBm, updateBm} from "@/api/hl/bm";
+import {addBm, delBm, listBm, updateBm,timeHistory,dayHistory} from "@/api/hl/bm";
 import {history} from "@/api/hl/hlScore";
-import {history as dayHistory} from "@/api/hl/hlDay";
 import addBmInfo from "./component/addBm.vue"
 import healthSetting from "./component/healthSetting.vue"
 import historyHealth from "./component/historyHealth.vue"
@@ -267,7 +266,7 @@ function initChatLeft(res, tag) {
 
 /** 查询业务模型列表 */
 function getList() {
-  history().then(response => {
+  timeHistory().then(response => {
     proxy.$nextTick(() => {
       initChatLeft(response, 'left');
     })

+ 354 - 0
src/views/hl/hc/index.vue

@@ -0,0 +1,354 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="模型ID" prop="modelId">
+        <el-input
+          v-model="queryParams.modelId"
+          placeholder="请输入模型ID"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="业务类型" prop="objType">
+        <el-select v-model="queryParams.objType" placeholder="请选择业务类型" clearable>
+          <el-option
+            v-for="dict in biz_type"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="细项分" prop="scoreType">
+        <el-select v-model="queryParams.scoreType" placeholder="请选择细项分" clearable>
+          <el-option
+            v-for="dict in metrics_small_type"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="健康度分值" prop="hlScore">
+        <el-input
+          v-model="queryParams.hlScore"
+          placeholder="请输入健康度分值"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="创建人" prop="createBy">
+        <el-input
+          v-model="queryParams.createBy"
+          placeholder="请输入创建人"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="创建时间" prop="createTime">
+        <el-date-picker clearable
+          v-model="queryParams.createTime"
+          type="date"
+          value-format="YYYY-MM-DD"
+          placeholder="请选择创建时间">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="更新人" prop="updateBy">
+        <el-input
+          v-model="queryParams.updateBy"
+          placeholder="请输入更新人"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="更新时间" prop="updateTime">
+        <el-date-picker clearable
+          v-model="queryParams.updateTime"
+          type="date"
+          value-format="YYYY-MM-DD"
+          placeholder="请选择更新时间">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
+        <el-button icon="Refresh" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="Plus"
+          @click="handleAdd"
+          v-hasPermi="['hl:hc:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="Edit"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['hl:hc:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="Delete"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['hl:hc:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="Download"
+          @click="handleExport"
+          v-hasPermi="['hl:hc:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="hcList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="健康度分类ID" align="center" prop="hlClassId" />
+      <el-table-column label="模型ID" align="center" prop="modelId" />
+      <el-table-column label="业务类型" align="center" prop="objType">
+        <template #default="scope">
+          <dict-tag :options="biz_type" :value="scope.row.objType"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="细项分" align="center" prop="scoreType">
+        <template #default="scope">
+          <dict-tag :options="metrics_small_type" :value="scope.row.scoreType"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="健康度分值" align="center" prop="hlScore" />
+      <el-table-column label="创建人" align="center" prop="createBy" />
+      <el-table-column label="创建时间" align="center" prop="createTime" width="180">
+        <template #default="scope">
+          <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{mi}:{s}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="更新人" align="center" prop="updateBy" />
+      <el-table-column label="更新时间" align="center" prop="updateTime" width="180">
+        <template #default="scope">
+          <span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d} {h}:{mi}:{s}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="备注" align="center" prop="remark" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template #default="scope">
+          <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['hl:hc:edit']">修改</el-button>
+          <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['hl:hc:remove']">删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      v-model:page="queryParams.pageNum"
+      v-model:limit="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改模型健康度分类对话框 -->
+    <el-dialog :title="title" v-model="open" width="500px" append-to-body>
+      <el-form ref="hcRef" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="模型ID" prop="modelId">
+          <el-input v-model="form.modelId" placeholder="请输入模型ID" />
+        </el-form-item>
+        <el-form-item label="业务类型" prop="objType">
+          <el-select v-model="form.objType" placeholder="请选择业务类型">
+            <el-option
+              v-for="dict in biz_type"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="细项分" prop="scoreType">
+          <el-select v-model="form.scoreType" placeholder="请选择细项分">
+            <el-option
+              v-for="dict in metrics_small_type"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="健康度分值" prop="hlScore">
+          <el-input v-model="form.hlScore" placeholder="请输入健康度分值" />
+        </el-form-item>
+        <el-form-item label="备注" prop="remark">
+          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+      </el-form>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button type="primary" @click="submitForm">确 定</el-button>
+          <el-button @click="cancel">取 消</el-button>
+        </div>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script setup name="Hc">
+    import { listHc, getHc, delHc, addHc, updateHc } from "@/api/hl/hc";
+
+    const { proxy } = getCurrentInstance();
+const { metrics_small_type, biz_type } = proxy.useDict('metrics_small_type', 'biz_type');
+
+const hcList = ref([]);
+const open = ref(false);
+const loading = ref(true);
+const showSearch = ref(true);
+const ids = ref([]);
+const single = ref(true);
+const multiple = ref(true);
+const total = ref(0);
+const title = ref("");
+
+const data = reactive({
+  form: {},
+  queryParams: {
+    pageNum: 1,
+    pageSize: 10,
+    modelId: null,
+    objType: null,
+    scoreType: null,
+    hlScore: null,
+    createBy: null,
+    createTime: null,
+    updateBy: null,
+    updateTime: null,
+    remark: null
+  },
+  rules: {
+  }
+});
+
+const { queryParams, form, rules } = toRefs(data);
+
+/** 查询模型健康度分类列表 */
+function getList() {
+  loading.value = true;
+  listHc(queryParams.value).then(response => {
+    hcList.value = response.rows;
+    total.value = response.total;
+    loading.value = false;
+  });
+}
+
+// 取消按钮
+function cancel() {
+  open.value = false;
+  reset();
+}
+
+// 表单重置
+function reset() {
+  form.value = {
+    hlClassId: null,
+    modelId: null,
+    objType: null,
+    scoreType: null,
+    hlScore: null,
+    createBy: null,
+    createTime: null,
+    updateBy: null,
+    updateTime: null,
+    remark: null
+  };
+  proxy.resetForm("hcRef");
+}
+
+/** 搜索按钮操作 */
+function handleQuery() {
+  queryParams.value.pageNum = 1;
+  getList();
+}
+
+/** 重置按钮操作 */
+function resetQuery() {
+  proxy.resetForm("queryRef");
+  handleQuery();
+}
+
+// 多选框选中数据
+function handleSelectionChange(selection) {
+  ids.value = selection.map(item => item.hlClassId);
+  single.value = selection.length != 1;
+  multiple.value = !selection.length;
+}
+
+/** 新增按钮操作 */
+function handleAdd() {
+  reset();
+  open.value = true;
+  title.value = "添加模型健康度分类";
+}
+
+/** 修改按钮操作 */
+function handleUpdate(row) {
+  reset();
+  const _hlClassId = row.hlClassId || ids.value
+  getHc(_hlClassId).then(response => {
+    form.value = response.data;
+    open.value = true;
+    title.value = "修改模型健康度分类";
+  });
+}
+
+/** 提交按钮 */
+function submitForm() {
+  proxy.$refs["hcRef"].validate(valid => {
+    if (valid) {
+      if (form.value.hlClassId != null) {
+        updateHc(form.value).then(response => {
+          proxy.$modal.msgSuccess("修改成功");
+          open.value = false;
+          getList();
+        });
+      } else {
+        addHc(form.value).then(response => {
+          proxy.$modal.msgSuccess("新增成功");
+          open.value = false;
+          getList();
+        });
+      }
+    }
+  });
+}
+
+/** 删除按钮操作 */
+function handleDelete(row) {
+  const _hlClassIds = row.hlClassId || ids.value;
+  proxy.$modal.confirm('是否确认删除模型健康度分类编号为"' + _hlClassIds + '"的数据项?').then(function() {
+    return delHc(_hlClassIds);
+  }).then(() => {
+    getList();
+    proxy.$modal.msgSuccess("删除成功");
+  }).catch(() => {});
+}
+
+/** 导出按钮操作 */
+function handleExport() {
+  proxy.download('hl/hc/export', {
+    ...queryParams.value
+  }, `hc_${new Date().getTime()}.xlsx`)
+}
+
+getList();
+</script>

+ 396 - 0
src/views/hl/hcs/index.vue

@@ -0,0 +1,396 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="健康度分数记录ID" prop="hlScoreId">
+        <el-input
+          v-model="queryParams.hlScoreId"
+          placeholder="请输入健康度分数记录ID"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="模型ID" prop="modelId">
+        <el-input
+          v-model="queryParams.modelId"
+          placeholder="请输入模型ID"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="业务类型" prop="objType">
+        <el-select v-model="queryParams.objType" placeholder="请选择业务类型" clearable>
+          <el-option
+            v-for="dict in biz_type"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="细项分" prop="scoreType">
+        <el-select v-model="queryParams.scoreType" placeholder="请选择细项分" clearable>
+          <el-option
+            v-for="dict in metrics_small_type"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="健康度分值" prop="hlScore">
+        <el-input
+          v-model="queryParams.hlScore"
+          placeholder="请输入健康度分值"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="扣分" prop="loseScore">
+        <el-input
+          v-model="queryParams.loseScore"
+          placeholder="请输入扣分"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="得分" prop="score">
+        <el-input
+          v-model="queryParams.score"
+          placeholder="请输入得分"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="创建人" prop="createBy">
+        <el-input
+          v-model="queryParams.createBy"
+          placeholder="请输入创建人"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="创建时间" prop="createTime">
+        <el-date-picker clearable
+          v-model="queryParams.createTime"
+          type="date"
+          value-format="YYYY-MM-DD"
+          placeholder="请选择创建时间">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="更新人" prop="updateBy">
+        <el-input
+          v-model="queryParams.updateBy"
+          placeholder="请输入更新人"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="更新时间" prop="updateTime">
+        <el-date-picker clearable
+          v-model="queryParams.updateTime"
+          type="date"
+          value-format="YYYY-MM-DD"
+          placeholder="请选择更新时间">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
+        <el-button icon="Refresh" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="Plus"
+          @click="handleAdd"
+          v-hasPermi="['hl:hcs:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="Edit"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['hl:hcs:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="Delete"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['hl:hcs:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="Download"
+          @click="handleExport"
+          v-hasPermi="['hl:hcs:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="hcsList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="健康度分类ID" align="center" prop="scoreClassId" />
+      <el-table-column label="健康度分数记录ID" align="center" prop="hlScoreId" />
+      <el-table-column label="模型ID" align="center" prop="modelId" />
+      <el-table-column label="业务类型" align="center" prop="objType">
+        <template #default="scope">
+          <dict-tag :options="biz_type" :value="scope.row.objType"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="细项分" align="center" prop="scoreType">
+        <template #default="scope">
+          <dict-tag :options="metrics_small_type" :value="scope.row.scoreType"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="健康度分值" align="center" prop="hlScore" />
+      <el-table-column label="扣分" align="center" prop="loseScore" />
+      <el-table-column label="得分" align="center" prop="score" />
+      <el-table-column label="创建人" align="center" prop="createBy" />
+      <el-table-column label="创建时间" align="center" prop="createTime" width="180">
+        <template #default="scope">
+          <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{mi}:{s}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="更新人" align="center" prop="updateBy" />
+      <el-table-column label="更新时间" align="center" prop="updateTime" width="180">
+        <template #default="scope">
+          <span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d} {h}:{mi}:{s}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="备注" align="center" prop="remark" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template #default="scope">
+          <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['hl:hcs:edit']">修改</el-button>
+          <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['hl:hcs:remove']">删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      v-model:page="queryParams.pageNum"
+      v-model:limit="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改模型健康度分类得分对话框 -->
+    <el-dialog :title="title" v-model="open" width="500px" append-to-body>
+      <el-form ref="hcsRef" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="健康度分数记录ID" prop="hlScoreId">
+          <el-input v-model="form.hlScoreId" placeholder="请输入健康度分数记录ID" />
+        </el-form-item>
+        <el-form-item label="模型ID" prop="modelId">
+          <el-input v-model="form.modelId" placeholder="请输入模型ID" />
+        </el-form-item>
+        <el-form-item label="业务类型" prop="objType">
+          <el-select v-model="form.objType" placeholder="请选择业务类型">
+            <el-option
+              v-for="dict in biz_type"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="细项分" prop="scoreType">
+          <el-select v-model="form.scoreType" placeholder="请选择细项分">
+            <el-option
+              v-for="dict in metrics_small_type"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="健康度分值" prop="hlScore">
+          <el-input v-model="form.hlScore" placeholder="请输入健康度分值" />
+        </el-form-item>
+        <el-form-item label="扣分" prop="loseScore">
+          <el-input v-model="form.loseScore" placeholder="请输入扣分" />
+        </el-form-item>
+        <el-form-item label="得分" prop="score">
+          <el-input v-model="form.score" placeholder="请输入得分" />
+        </el-form-item>
+        <el-form-item label="备注" prop="remark">
+          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+      </el-form>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button type="primary" @click="submitForm">确 定</el-button>
+          <el-button @click="cancel">取 消</el-button>
+        </div>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script setup name="Hcs">
+    import { listHcs, getHcs, delHcs, addHcs, updateHcs } from "@/api/hl/hcs";
+
+    const { proxy } = getCurrentInstance();
+const { metrics_small_type, biz_type } = proxy.useDict('metrics_small_type', 'biz_type');
+
+const hcsList = ref([]);
+const open = ref(false);
+const loading = ref(true);
+const showSearch = ref(true);
+const ids = ref([]);
+const single = ref(true);
+const multiple = ref(true);
+const total = ref(0);
+const title = ref("");
+
+const data = reactive({
+  form: {},
+  queryParams: {
+    pageNum: 1,
+    pageSize: 10,
+    hlScoreId: null,
+    modelId: null,
+    objType: null,
+    scoreType: null,
+    hlScore: null,
+    loseScore: null,
+    score: null,
+    createBy: null,
+    createTime: null,
+    updateBy: null,
+    updateTime: null,
+    remark: null
+  },
+  rules: {
+  }
+});
+
+const { queryParams, form, rules } = toRefs(data);
+
+/** 查询模型健康度分类得分列表 */
+function getList() {
+  loading.value = true;
+  listHcs(queryParams.value).then(response => {
+    hcsList.value = response.rows;
+    total.value = response.total;
+    loading.value = false;
+  });
+}
+
+// 取消按钮
+function cancel() {
+  open.value = false;
+  reset();
+}
+
+// 表单重置
+function reset() {
+  form.value = {
+    scoreClassId: null,
+    hlScoreId: null,
+    modelId: null,
+    objType: null,
+    scoreType: null,
+    hlScore: null,
+    loseScore: null,
+    score: null,
+    createBy: null,
+    createTime: null,
+    updateBy: null,
+    updateTime: null,
+    remark: null
+  };
+  proxy.resetForm("hcsRef");
+}
+
+/** 搜索按钮操作 */
+function handleQuery() {
+  queryParams.value.pageNum = 1;
+  getList();
+}
+
+/** 重置按钮操作 */
+function resetQuery() {
+  proxy.resetForm("queryRef");
+  handleQuery();
+}
+
+// 多选框选中数据
+function handleSelectionChange(selection) {
+  ids.value = selection.map(item => item.scoreClassId);
+  single.value = selection.length != 1;
+  multiple.value = !selection.length;
+}
+
+/** 新增按钮操作 */
+function handleAdd() {
+  reset();
+  open.value = true;
+  title.value = "添加模型健康度分类得分";
+}
+
+/** 修改按钮操作 */
+function handleUpdate(row) {
+  reset();
+  const _scoreClassId = row.scoreClassId || ids.value
+  getHcs(_scoreClassId).then(response => {
+    form.value = response.data;
+    open.value = true;
+    title.value = "修改模型健康度分类得分";
+  });
+}
+
+/** 提交按钮 */
+function submitForm() {
+  proxy.$refs["hcsRef"].validate(valid => {
+    if (valid) {
+      if (form.value.scoreClassId != null) {
+        updateHcs(form.value).then(response => {
+          proxy.$modal.msgSuccess("修改成功");
+          open.value = false;
+          getList();
+        });
+      } else {
+        addHcs(form.value).then(response => {
+          proxy.$modal.msgSuccess("新增成功");
+          open.value = false;
+          getList();
+        });
+      }
+    }
+  });
+}
+
+/** 删除按钮操作 */
+function handleDelete(row) {
+  const _scoreClassIds = row.scoreClassId || ids.value;
+  proxy.$modal.confirm('是否确认删除模型健康度分类得分编号为"' + _scoreClassIds + '"的数据项?').then(function() {
+    return delHcs(_scoreClassIds);
+  }).then(() => {
+    getList();
+    proxy.$modal.msgSuccess("删除成功");
+  }).catch(() => {});
+}
+
+/** 导出按钮操作 */
+function handleExport() {
+  proxy.download('hl/hcs/export', {
+    ...queryParams.value
+  }, `hcs_${new Date().getTime()}.xlsx`)
+}
+
+getList();
+</script>

+ 341 - 0
src/views/hl/hm/index.vue

@@ -0,0 +1,341 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="健康度分类ID" prop="hlClassId">
+        <el-input
+            v-model="queryParams.hlClassId"
+            placeholder="请输入健康度分类ID"
+            clearable
+            @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="指标ID" prop="metricsId">
+        <el-input
+            v-model="queryParams.metricsId"
+            placeholder="请输入指标ID"
+            clearable
+            @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="健康度分值" prop="hlScore">
+        <el-input
+            v-model="queryParams.hlScore"
+            placeholder="请输入健康度分值"
+            clearable
+            @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="评分标准" prop="hlStand">
+        <el-select v-model="queryParams.hlStand" placeholder="请选择评分标准" clearable>
+          <el-option
+              v-for="dict in score_stand"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+          />
+        </el-select>
+      </el-form-item>
+      <el-form-item label="创建人" prop="createBy">
+        <el-input
+            v-model="queryParams.createBy"
+            placeholder="请输入创建人"
+            clearable
+            @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="创建时间" prop="createTime">
+        <el-date-picker clearable
+                        v-model="queryParams.createTime"
+                        type="date"
+                        value-format="YYYY-MM-DD"
+                        placeholder="请选择创建时间">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="更新人" prop="updateBy">
+        <el-input
+            v-model="queryParams.updateBy"
+            placeholder="请输入更新人"
+            clearable
+            @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="更新时间" prop="updateTime">
+        <el-date-picker clearable
+                        v-model="queryParams.updateTime"
+                        type="date"
+                        value-format="YYYY-MM-DD"
+                        placeholder="请选择更新时间">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
+        <el-button icon="Refresh" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+            type="primary"
+            plain
+            icon="Plus"
+            @click="handleAdd"
+            v-hasPermi="['hl:hm:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+            type="success"
+            plain
+            icon="Edit"
+            :disabled="single"
+            @click="handleUpdate"
+            v-hasPermi="['hl:hm:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+            type="danger"
+            plain
+            icon="Delete"
+            :disabled="multiple"
+            @click="handleDelete"
+            v-hasPermi="['hl:hm:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+            type="warning"
+            plain
+            icon="Download"
+            @click="handleExport"
+            v-hasPermi="['hl:hm:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="hmList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="指标明细ID" align="center" prop="hlMetricsId" />
+      <el-table-column label="健康度分类ID" align="center" prop="hlClassId" />
+      <el-table-column label="指标ID" align="center" prop="metricsId" />
+      <el-table-column label="健康度分值" align="center" prop="hlScore" />
+      <el-table-column label="评分标准" align="center" prop="hlStand">
+        <template #default="scope">
+          <dict-tag :options="score_stand" :value="scope.row.hlStand"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="创建人" align="center" prop="createBy" />
+      <el-table-column label="创建时间" align="center" prop="createTime" width="180">
+        <template #default="scope">
+          <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{mi}:{s}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="更新人" align="center" prop="updateBy" />
+      <el-table-column label="更新时间" align="center" prop="updateTime" width="180">
+        <template #default="scope">
+          <span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d} {h}:{mi}:{s}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="备注" align="center" prop="remark" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template #default="scope">
+          <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['hl:hm:edit']">修改</el-button>
+          <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['hl:hm:remove']">删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+        v-show="total>0"
+        :total="total"
+        v-model:page="queryParams.pageNum"
+        v-model:limit="queryParams.pageSize"
+        @pagination="getList"
+    />
+
+    <!-- 添加或修改业务模型健康度指标对话框 -->
+    <el-dialog :title="title" v-model="open" width="500px" append-to-body>
+      <el-form ref="hmRef" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="健康度分类ID" prop="hlClassId">
+          <el-input v-model="form.hlClassId" placeholder="请输入健康度分类ID" />
+        </el-form-item>
+        <el-form-item label="指标ID" prop="metricsId">
+          <el-input v-model="form.metricsId" placeholder="请输入指标ID" />
+        </el-form-item>
+        <el-form-item label="健康度分值" prop="hlScore">
+          <el-input v-model="form.hlScore" placeholder="请输入健康度分值" />
+        </el-form-item>
+        <el-form-item label="评分标准" prop="hlStand">
+          <el-select v-model="form.hlStand" placeholder="请选择评分标准">
+            <el-option
+                v-for="dict in score_stand"
+                :key="dict.value"
+                :label="dict.label"
+                :value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="备注" prop="remark">
+          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+      </el-form>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button type="primary" @click="submitForm">确 定</el-button>
+          <el-button @click="cancel">取 消</el-button>
+        </div>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script setup name="Hm">
+import { listHm, getHm, delHm, addHm, updateHm } from "@/api/hl/hm";
+
+const { proxy } = getCurrentInstance();
+const { score_stand } = proxy.useDict('score_stand');
+
+const hmList = ref([]);
+const open = ref(false);
+const loading = ref(true);
+const showSearch = ref(true);
+const ids = ref([]);
+const single = ref(true);
+const multiple = ref(true);
+const total = ref(0);
+const title = ref("");
+
+const data = reactive({
+  form: {},
+  queryParams: {
+    pageNum: 1,
+    pageSize: 10,
+    hlClassId: null,
+    metricsId: null,
+    hlScore: null,
+    hlStand: null,
+    createBy: null,
+    createTime: null,
+    updateBy: null,
+    updateTime: null,
+    remark: null
+  },
+  rules: {
+  }
+});
+
+const { queryParams, form, rules } = toRefs(data);
+
+/** 查询业务模型健康度指标列表 */
+function getList() {
+  loading.value = true;
+  listHm(queryParams.value).then(response => {
+    hmList.value = response.rows;
+    total.value = response.total;
+    loading.value = false;
+  });
+}
+
+// 取消按钮
+function cancel() {
+  open.value = false;
+  reset();
+}
+
+// 表单重置
+function reset() {
+  form.value = {
+    hlMetricsId: null,
+    hlClassId: null,
+    metricsId: null,
+    hlScore: null,
+    hlStand: null,
+    createBy: null,
+    createTime: null,
+    updateBy: null,
+    updateTime: null,
+    remark: null
+  };
+  proxy.resetForm("hmRef");
+}
+
+/** 搜索按钮操作 */
+function handleQuery() {
+  queryParams.value.pageNum = 1;
+  getList();
+}
+
+/** 重置按钮操作 */
+function resetQuery() {
+  proxy.resetForm("queryRef");
+  handleQuery();
+}
+
+// 多选框选中数据
+function handleSelectionChange(selection) {
+  ids.value = selection.map(item => item.hlMetricsId);
+  single.value = selection.length != 1;
+  multiple.value = !selection.length;
+}
+
+/** 新增按钮操作 */
+function handleAdd() {
+  reset();
+  open.value = true;
+  title.value = "添加业务模型健康度指标";
+}
+
+/** 修改按钮操作 */
+function handleUpdate(row) {
+  reset();
+  const _hlMetricsId = row.hlMetricsId || ids.value
+  getHm(_hlMetricsId).then(response => {
+    form.value = response.data;
+    open.value = true;
+    title.value = "修改业务模型健康度指标";
+  });
+}
+
+/** 提交按钮 */
+function submitForm() {
+  proxy.$refs["hmRef"].validate(valid => {
+    if (valid) {
+      if (form.value.hlMetricsId != null) {
+        updateHm(form.value).then(response => {
+          proxy.$modal.msgSuccess("修改成功");
+          open.value = false;
+          getList();
+        });
+      } else {
+        addHm(form.value).then(response => {
+          proxy.$modal.msgSuccess("新增成功");
+          open.value = false;
+          getList();
+        });
+      }
+    }
+  });
+}
+
+/** 删除按钮操作 */
+function handleDelete(row) {
+  const _hlMetricsIds = row.hlMetricsId || ids.value;
+  proxy.$modal.confirm('是否确认删除业务模型健康度指标编号为"' + _hlMetricsIds + '"的数据项?').then(function() {
+    return delHm(_hlMetricsIds);
+  }).then(() => {
+    getList();
+    proxy.$modal.msgSuccess("删除成功");
+  }).catch(() => {});
+}
+
+/** 导出按钮操作 */
+function handleExport() {
+  proxy.download('hl/hm/export', {
+    ...queryParams.value
+  }, `hm_${new Date().getTime()}.xlsx`)
+}
+
+getList();
+</script>

+ 355 - 0
src/views/hl/hms/index.vue

@@ -0,0 +1,355 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="健康度分类ID" prop="scoreClassId">
+        <el-input
+          v-model="queryParams.scoreClassId"
+          placeholder="请输入健康度分类ID"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="指标ID" prop="metricsId">
+        <el-input
+          v-model="queryParams.metricsId"
+          placeholder="请输入指标ID"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="健康度分值" prop="hlScore">
+        <el-input
+          v-model="queryParams.hlScore"
+          placeholder="请输入健康度分值"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="评分标准" prop="hlStand">
+        <el-input
+          v-model="queryParams.hlStand"
+          placeholder="请输入评分标准"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="扣分" prop="loseScore">
+        <el-input
+          v-model="queryParams.loseScore"
+          placeholder="请输入扣分"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="得分" prop="score">
+        <el-input
+          v-model="queryParams.score"
+          placeholder="请输入得分"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="创建人" prop="createBy">
+        <el-input
+          v-model="queryParams.createBy"
+          placeholder="请输入创建人"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="创建时间" prop="createTime">
+        <el-date-picker clearable
+          v-model="queryParams.createTime"
+          type="date"
+          value-format="YYYY-MM-DD"
+          placeholder="请选择创建时间">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="更新人" prop="updateBy">
+        <el-input
+          v-model="queryParams.updateBy"
+          placeholder="请输入更新人"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="更新时间" prop="updateTime">
+        <el-date-picker clearable
+          v-model="queryParams.updateTime"
+          type="date"
+          value-format="YYYY-MM-DD"
+          placeholder="请选择更新时间">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
+        <el-button icon="Refresh" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="Plus"
+          @click="handleAdd"
+          v-hasPermi="['hl:hms:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="Edit"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['hl:hms:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="Delete"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['hl:hms:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="Download"
+          @click="handleExport"
+          v-hasPermi="['hl:hms:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="hmsList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="指标明细ID" align="center" prop="scoreMetricsId" />
+      <el-table-column label="健康度分类ID" align="center" prop="scoreClassId" />
+      <el-table-column label="指标ID" align="center" prop="metricsId" />
+      <el-table-column label="健康度分值" align="center" prop="hlScore" />
+      <el-table-column label="评分标准" align="center" prop="hlStand" />
+      <el-table-column label="扣分" align="center" prop="loseScore" />
+      <el-table-column label="得分" align="center" prop="score" />
+      <el-table-column label="创建人" align="center" prop="createBy" />
+      <el-table-column label="创建时间" align="center" prop="createTime" width="180">
+        <template #default="scope">
+          <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{mi}:{s}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="更新人" align="center" prop="updateBy" />
+      <el-table-column label="更新时间" align="center" prop="updateTime" width="180">
+        <template #default="scope">
+          <span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d} {h}:{mi}:{s}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="备注" align="center" prop="remark" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template #default="scope">
+          <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['hl:hms:edit']">修改</el-button>
+          <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['hl:hms:remove']">删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      v-model:page="queryParams.pageNum"
+      v-model:limit="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改业务模型健康度指标得分对话框 -->
+    <el-dialog :title="title" v-model="open" width="500px" append-to-body>
+      <el-form ref="hmsRef" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="健康度分类ID" prop="scoreClassId">
+          <el-input v-model="form.scoreClassId" placeholder="请输入健康度分类ID" />
+        </el-form-item>
+        <el-form-item label="指标ID" prop="metricsId">
+          <el-input v-model="form.metricsId" placeholder="请输入指标ID" />
+        </el-form-item>
+        <el-form-item label="健康度分值" prop="hlScore">
+          <el-input v-model="form.hlScore" placeholder="请输入健康度分值" />
+        </el-form-item>
+        <el-form-item label="评分标准" prop="hlStand">
+          <el-input v-model="form.hlStand" placeholder="请输入评分标准" />
+        </el-form-item>
+        <el-form-item label="扣分" prop="loseScore">
+          <el-input v-model="form.loseScore" placeholder="请输入扣分" />
+        </el-form-item>
+        <el-form-item label="得分" prop="score">
+          <el-input v-model="form.score" placeholder="请输入得分" />
+        </el-form-item>
+        <el-form-item label="备注" prop="remark">
+          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+      </el-form>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button type="primary" @click="submitForm">确 定</el-button>
+          <el-button @click="cancel">取 消</el-button>
+        </div>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script setup name="Hms">
+    import { listHms, getHms, delHms, addHms, updateHms } from "@/api/hl/hms";
+
+    const { proxy } = getCurrentInstance();
+
+const hmsList = ref([]);
+const open = ref(false);
+const loading = ref(true);
+const showSearch = ref(true);
+const ids = ref([]);
+const single = ref(true);
+const multiple = ref(true);
+const total = ref(0);
+const title = ref("");
+
+const data = reactive({
+  form: {},
+  queryParams: {
+    pageNum: 1,
+    pageSize: 10,
+    scoreClassId: null,
+    metricsId: null,
+    hlScore: null,
+    hlStand: null,
+    loseScore: null,
+    score: null,
+    createBy: null,
+    createTime: null,
+    updateBy: null,
+    updateTime: null,
+    remark: null
+  },
+  rules: {
+  }
+});
+
+const { queryParams, form, rules } = toRefs(data);
+
+/** 查询业务模型健康度指标得分列表 */
+function getList() {
+  loading.value = true;
+  listHms(queryParams.value).then(response => {
+    hmsList.value = response.rows;
+    total.value = response.total;
+    loading.value = false;
+  });
+}
+
+// 取消按钮
+function cancel() {
+  open.value = false;
+  reset();
+}
+
+// 表单重置
+function reset() {
+  form.value = {
+    scoreMetricsId: null,
+    scoreClassId: null,
+    metricsId: null,
+    hlScore: null,
+    hlStand: null,
+    loseScore: null,
+    score: null,
+    createBy: null,
+    createTime: null,
+    updateBy: null,
+    updateTime: null,
+    remark: null
+  };
+  proxy.resetForm("hmsRef");
+}
+
+/** 搜索按钮操作 */
+function handleQuery() {
+  queryParams.value.pageNum = 1;
+  getList();
+}
+
+/** 重置按钮操作 */
+function resetQuery() {
+  proxy.resetForm("queryRef");
+  handleQuery();
+}
+
+// 多选框选中数据
+function handleSelectionChange(selection) {
+  ids.value = selection.map(item => item.scoreMetricsId);
+  single.value = selection.length != 1;
+  multiple.value = !selection.length;
+}
+
+/** 新增按钮操作 */
+function handleAdd() {
+  reset();
+  open.value = true;
+  title.value = "添加业务模型健康度指标得分";
+}
+
+/** 修改按钮操作 */
+function handleUpdate(row) {
+  reset();
+  const _scoreMetricsId = row.scoreMetricsId || ids.value
+  getHms(_scoreMetricsId).then(response => {
+    form.value = response.data;
+    open.value = true;
+    title.value = "修改业务模型健康度指标得分";
+  });
+}
+
+/** 提交按钮 */
+function submitForm() {
+  proxy.$refs["hmsRef"].validate(valid => {
+    if (valid) {
+      if (form.value.scoreMetricsId != null) {
+        updateHms(form.value).then(response => {
+          proxy.$modal.msgSuccess("修改成功");
+          open.value = false;
+          getList();
+        });
+      } else {
+        addHms(form.value).then(response => {
+          proxy.$modal.msgSuccess("新增成功");
+          open.value = false;
+          getList();
+        });
+      }
+    }
+  });
+}
+
+/** 删除按钮操作 */
+function handleDelete(row) {
+  const _scoreMetricsIds = row.scoreMetricsId || ids.value;
+  proxy.$modal.confirm('是否确认删除业务模型健康度指标得分编号为"' + _scoreMetricsIds + '"的数据项?').then(function() {
+    return delHms(_scoreMetricsIds);
+  }).then(() => {
+    getList();
+    proxy.$modal.msgSuccess("删除成功");
+  }).catch(() => {});
+}
+
+/** 导出按钮操作 */
+function handleExport() {
+  proxy.download('hl/hms/export', {
+    ...queryParams.value
+  }, `hms_${new Date().getTime()}.xlsx`)
+}
+
+getList();
+</script>

+ 241 - 0
src/views/hl/hmsd/index.vue

@@ -0,0 +1,241 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="指标明细ID" prop="scoreMetricsId">
+        <el-input
+          v-model="queryParams.scoreMetricsId"
+          placeholder="请输入指标明细ID"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="ID" prop="objMetricsId">
+        <el-input
+          v-model="queryParams.objMetricsId"
+          placeholder="请输入ID"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
+        <el-button icon="Refresh" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="Plus"
+          @click="handleAdd"
+          v-hasPermi="['hl:hmsd:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="Edit"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['hl:hmsd:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="Delete"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['hl:hmsd:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="Download"
+          @click="handleExport"
+          v-hasPermi="['hl:hmsd:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="hmsdList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="指标明细ID" align="center" prop="scoreDetailId" />
+      <el-table-column label="指标明细ID" align="center" prop="scoreMetricsId" />
+      <el-table-column label="ID" align="center" prop="objMetricsId" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template #default="scope">
+          <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['hl:hmsd:edit']">修改</el-button>
+          <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['hl:hmsd:remove']">删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      v-model:page="queryParams.pageNum"
+      v-model:limit="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改业务模型健康度得分指标明细对话框 -->
+    <el-dialog :title="title" v-model="open" width="500px" append-to-body>
+      <el-form ref="hmsdRef" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="指标明细ID" prop="scoreMetricsId">
+          <el-input v-model="form.scoreMetricsId" placeholder="请输入指标明细ID" />
+        </el-form-item>
+        <el-form-item label="ID" prop="objMetricsId">
+          <el-input v-model="form.objMetricsId" placeholder="请输入ID" />
+        </el-form-item>
+      </el-form>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button type="primary" @click="submitForm">确 定</el-button>
+          <el-button @click="cancel">取 消</el-button>
+        </div>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script setup name="Hmsd">
+    import { listHmsd, getHmsd, delHmsd, addHmsd, updateHmsd } from "@/api/hl/hmsd";
+
+    const { proxy } = getCurrentInstance();
+
+const hmsdList = ref([]);
+const open = ref(false);
+const loading = ref(true);
+const showSearch = ref(true);
+const ids = ref([]);
+const single = ref(true);
+const multiple = ref(true);
+const total = ref(0);
+const title = ref("");
+
+const data = reactive({
+  form: {},
+  queryParams: {
+    pageNum: 1,
+    pageSize: 10,
+    scoreMetricsId: null,
+    objMetricsId: null
+  },
+  rules: {
+  }
+});
+
+const { queryParams, form, rules } = toRefs(data);
+
+/** 查询业务模型健康度得分指标明细列表 */
+function getList() {
+  loading.value = true;
+  listHmsd(queryParams.value).then(response => {
+    hmsdList.value = response.rows;
+    total.value = response.total;
+    loading.value = false;
+  });
+}
+
+// 取消按钮
+function cancel() {
+  open.value = false;
+  reset();
+}
+
+// 表单重置
+function reset() {
+  form.value = {
+    scoreDetailId: null,
+    scoreMetricsId: null,
+    objMetricsId: null
+  };
+  proxy.resetForm("hmsdRef");
+}
+
+/** 搜索按钮操作 */
+function handleQuery() {
+  queryParams.value.pageNum = 1;
+  getList();
+}
+
+/** 重置按钮操作 */
+function resetQuery() {
+  proxy.resetForm("queryRef");
+  handleQuery();
+}
+
+// 多选框选中数据
+function handleSelectionChange(selection) {
+  ids.value = selection.map(item => item.scoreDetailId);
+  single.value = selection.length != 1;
+  multiple.value = !selection.length;
+}
+
+/** 新增按钮操作 */
+function handleAdd() {
+  reset();
+  open.value = true;
+  title.value = "添加业务模型健康度得分指标明细";
+}
+
+/** 修改按钮操作 */
+function handleUpdate(row) {
+  reset();
+  const _scoreDetailId = row.scoreDetailId || ids.value
+  getHmsd(_scoreDetailId).then(response => {
+    form.value = response.data;
+    open.value = true;
+    title.value = "修改业务模型健康度得分指标明细";
+  });
+}
+
+/** 提交按钮 */
+function submitForm() {
+  proxy.$refs["hmsdRef"].validate(valid => {
+    if (valid) {
+      if (form.value.scoreDetailId != null) {
+        updateHmsd(form.value).then(response => {
+          proxy.$modal.msgSuccess("修改成功");
+          open.value = false;
+          getList();
+        });
+      } else {
+        addHmsd(form.value).then(response => {
+          proxy.$modal.msgSuccess("新增成功");
+          open.value = false;
+          getList();
+        });
+      }
+    }
+  });
+}
+
+/** 删除按钮操作 */
+function handleDelete(row) {
+  const _scoreDetailIds = row.scoreDetailId || ids.value;
+  proxy.$modal.confirm('是否确认删除业务模型健康度得分指标明细编号为"' + _scoreDetailIds + '"的数据项?').then(function() {
+    return delHmsd(_scoreDetailIds);
+  }).then(() => {
+    getList();
+    proxy.$modal.msgSuccess("删除成功");
+  }).catch(() => {});
+}
+
+/** 导出按钮操作 */
+function handleExport() {
+  proxy.download('hl/hmsd/export', {
+    ...queryParams.value
+  }, `hmsd_${new Date().getTime()}.xlsx`)
+}
+
+getList();
+</script>

+ 299 - 0
src/views/hl/ho/index.vue

@@ -0,0 +1,299 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="健康度分类ID" prop="hlClassId">
+        <el-input
+          v-model="queryParams.hlClassId"
+          placeholder="请输入健康度分类ID"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="对象ID" prop="objId">
+        <el-input
+          v-model="queryParams.objId"
+          placeholder="请输入对象ID"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="创建人" prop="createBy">
+        <el-input
+          v-model="queryParams.createBy"
+          placeholder="请输入创建人"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="创建时间" prop="createTime">
+        <el-date-picker clearable
+          v-model="queryParams.createTime"
+          type="date"
+          value-format="YYYY-MM-DD"
+          placeholder="请选择创建时间">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="更新人" prop="updateBy">
+        <el-input
+          v-model="queryParams.updateBy"
+          placeholder="请输入更新人"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="更新时间" prop="updateTime">
+        <el-date-picker clearable
+          v-model="queryParams.updateTime"
+          type="date"
+          value-format="YYYY-MM-DD"
+          placeholder="请选择更新时间">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
+        <el-button icon="Refresh" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="Plus"
+          @click="handleAdd"
+          v-hasPermi="['hl:ho:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="Edit"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['hl:ho:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="Delete"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['hl:ho:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="Download"
+          @click="handleExport"
+          v-hasPermi="['hl:ho:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="hoList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="健康度对象ID" align="center" prop="hlObjId" />
+      <el-table-column label="健康度分类ID" align="center" prop="hlClassId" />
+      <el-table-column label="对象ID" align="center" prop="objId" />
+      <el-table-column label="创建人" align="center" prop="createBy" />
+      <el-table-column label="创建时间" align="center" prop="createTime" width="180">
+        <template #default="scope">
+          <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{mi}:{s}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="更新人" align="center" prop="updateBy" />
+      <el-table-column label="更新时间" align="center" prop="updateTime" width="180">
+        <template #default="scope">
+          <span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d} {h}:{mi}:{s}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="备注" align="center" prop="remark" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template #default="scope">
+          <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['hl:ho:edit']">修改</el-button>
+          <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['hl:ho:remove']">删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      v-model:page="queryParams.pageNum"
+      v-model:limit="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改模型健康度对象对话框 -->
+    <el-dialog :title="title" v-model="open" width="500px" append-to-body>
+      <el-form ref="hoRef" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="健康度分类ID" prop="hlClassId">
+          <el-input v-model="form.hlClassId" placeholder="请输入健康度分类ID" />
+        </el-form-item>
+        <el-form-item label="对象ID" prop="objId">
+          <el-input v-model="form.objId" placeholder="请输入对象ID" />
+        </el-form-item>
+        <el-form-item label="备注" prop="remark">
+          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+      </el-form>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button type="primary" @click="submitForm">确 定</el-button>
+          <el-button @click="cancel">取 消</el-button>
+        </div>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script setup name="Ho">
+    import { listHo, getHo, delHo, addHo, updateHo } from "@/api/hl/ho";
+
+    const { proxy } = getCurrentInstance();
+
+const hoList = ref([]);
+const open = ref(false);
+const loading = ref(true);
+const showSearch = ref(true);
+const ids = ref([]);
+const single = ref(true);
+const multiple = ref(true);
+const total = ref(0);
+const title = ref("");
+
+const data = reactive({
+  form: {},
+  queryParams: {
+    pageNum: 1,
+    pageSize: 10,
+    hlClassId: null,
+    objId: null,
+    createBy: null,
+    createTime: null,
+    updateBy: null,
+    updateTime: null,
+    remark: null
+  },
+  rules: {
+  }
+});
+
+const { queryParams, form, rules } = toRefs(data);
+
+/** 查询模型健康度对象列表 */
+function getList() {
+  loading.value = true;
+  listHo(queryParams.value).then(response => {
+    hoList.value = response.rows;
+    total.value = response.total;
+    loading.value = false;
+  });
+}
+
+// 取消按钮
+function cancel() {
+  open.value = false;
+  reset();
+}
+
+// 表单重置
+function reset() {
+  form.value = {
+    hlObjId: null,
+    hlClassId: null,
+    objId: null,
+    createBy: null,
+    createTime: null,
+    updateBy: null,
+    updateTime: null,
+    remark: null
+  };
+  proxy.resetForm("hoRef");
+}
+
+/** 搜索按钮操作 */
+function handleQuery() {
+  queryParams.value.pageNum = 1;
+  getList();
+}
+
+/** 重置按钮操作 */
+function resetQuery() {
+  proxy.resetForm("queryRef");
+  handleQuery();
+}
+
+// 多选框选中数据
+function handleSelectionChange(selection) {
+  ids.value = selection.map(item => item.hlObjId);
+  single.value = selection.length != 1;
+  multiple.value = !selection.length;
+}
+
+/** 新增按钮操作 */
+function handleAdd() {
+  reset();
+  open.value = true;
+  title.value = "添加模型健康度对象";
+}
+
+/** 修改按钮操作 */
+function handleUpdate(row) {
+  reset();
+  const _hlObjId = row.hlObjId || ids.value
+  getHo(_hlObjId).then(response => {
+    form.value = response.data;
+    open.value = true;
+    title.value = "修改模型健康度对象";
+  });
+}
+
+/** 提交按钮 */
+function submitForm() {
+  proxy.$refs["hoRef"].validate(valid => {
+    if (valid) {
+      if (form.value.hlObjId != null) {
+        updateHo(form.value).then(response => {
+          proxy.$modal.msgSuccess("修改成功");
+          open.value = false;
+          getList();
+        });
+      } else {
+        addHo(form.value).then(response => {
+          proxy.$modal.msgSuccess("新增成功");
+          open.value = false;
+          getList();
+        });
+      }
+    }
+  });
+}
+
+/** 删除按钮操作 */
+function handleDelete(row) {
+  const _hlObjIds = row.hlObjId || ids.value;
+  proxy.$modal.confirm('是否确认删除模型健康度对象编号为"' + _hlObjIds + '"的数据项?').then(function() {
+    return delHo(_hlObjIds);
+  }).then(() => {
+    getList();
+    proxy.$modal.msgSuccess("删除成功");
+  }).catch(() => {});
+}
+
+/** 导出按钮操作 */
+function handleExport() {
+  proxy.download('hl/ho/export', {
+    ...queryParams.value
+  }, `ho_${new Date().getTime()}.xlsx`)
+}
+
+getList();
+</script>

+ 325 - 0
src/views/hl/hs/index.vue

@@ -0,0 +1,325 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="模型ID" prop="modelId">
+        <el-input
+          v-model="queryParams.modelId"
+          placeholder="请输入模型ID"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="健康度分值" prop="hlScore">
+        <el-input
+          v-model="queryParams.hlScore"
+          placeholder="请输入健康度分值"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="日期" prop="hlDate">
+        <el-date-picker clearable
+          v-model="queryParams.hlDate"
+          type="date"
+          value-format="YYYY-MM-DD"
+          placeholder="请选择日期">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="创建人" prop="createBy">
+        <el-input
+          v-model="queryParams.createBy"
+          placeholder="请输入创建人"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="创建时间" prop="createTime">
+        <el-date-picker clearable
+          v-model="queryParams.createTime"
+          type="date"
+          value-format="YYYY-MM-DD"
+          placeholder="请选择创建时间">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="更新人" prop="updateBy">
+        <el-input
+          v-model="queryParams.updateBy"
+          placeholder="请输入更新人"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="更新时间" prop="updateTime">
+        <el-date-picker clearable
+          v-model="queryParams.updateTime"
+          type="date"
+          value-format="YYYY-MM-DD"
+          placeholder="请选择更新时间">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
+        <el-button icon="Refresh" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="Plus"
+          @click="handleAdd"
+          v-hasPermi="['hl:hs:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="Edit"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['hl:hs:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="Delete"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['hl:hs:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="Download"
+          @click="handleExport"
+          v-hasPermi="['hl:hs:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="hsList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="健康度分数记录ID;" align="center" prop="hlScoreId" />
+      <el-table-column label="模型ID" align="center" prop="modelId" />
+      <el-table-column label="健康度分值" align="center" prop="hlScore" />
+      <el-table-column label="类型" align="center" prop="hlType" />
+      <el-table-column label="日期" align="center" prop="hlDate" width="180">
+        <template #default="scope">
+          <span>{{ parseTime(scope.row.hlDate, '{y}-{m}-{d} {h}:{mi}:{s}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="创建人" align="center" prop="createBy" />
+      <el-table-column label="创建时间" align="center" prop="createTime" width="180">
+        <template #default="scope">
+          <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{mi}:{s}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="更新人" align="center" prop="updateBy" />
+      <el-table-column label="更新时间" align="center" prop="updateTime" width="180">
+        <template #default="scope">
+          <span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d} {h}:{mi}:{s}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="备注" align="center" prop="remark" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template #default="scope">
+          <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['hl:hs:edit']">修改</el-button>
+          <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['hl:hs:remove']">删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      v-model:page="queryParams.pageNum"
+      v-model:limit="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改健康度分数记录对话框 -->
+    <el-dialog :title="title" v-model="open" width="500px" append-to-body>
+      <el-form ref="hsRef" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="模型ID" prop="modelId">
+          <el-input v-model="form.modelId" placeholder="请输入模型ID" />
+        </el-form-item>
+        <el-form-item label="健康度分值" prop="hlScore">
+          <el-input v-model="form.hlScore" placeholder="请输入健康度分值" />
+        </el-form-item>
+        <el-form-item label="日期" prop="hlDate">
+          <el-date-picker clearable
+            v-model="form.hlDate"
+            type="date"
+            value-format="YYYY-MM-DD"
+            placeholder="请选择日期">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="备注" prop="remark">
+          <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+      </el-form>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button type="primary" @click="submitForm">确 定</el-button>
+          <el-button @click="cancel">取 消</el-button>
+        </div>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script setup name="Hs">
+    import { listHs, getHs, delHs, addHs, updateHs } from "@/api/hl/hs";
+
+    const { proxy } = getCurrentInstance();
+
+const hsList = ref([]);
+const open = ref(false);
+const loading = ref(true);
+const showSearch = ref(true);
+const ids = ref([]);
+const single = ref(true);
+const multiple = ref(true);
+const total = ref(0);
+const title = ref("");
+
+const data = reactive({
+  form: {},
+  queryParams: {
+    pageNum: 1,
+    pageSize: 10,
+    modelId: null,
+    hlScore: null,
+    hlType: null,
+    hlDate: null,
+    createBy: null,
+    createTime: null,
+    updateBy: null,
+    updateTime: null,
+    remark: null
+  },
+  rules: {
+  }
+});
+
+const { queryParams, form, rules } = toRefs(data);
+
+/** 查询健康度分数记录列表 */
+function getList() {
+  loading.value = true;
+  listHs(queryParams.value).then(response => {
+    hsList.value = response.rows;
+    total.value = response.total;
+    loading.value = false;
+  });
+}
+
+// 取消按钮
+function cancel() {
+  open.value = false;
+  reset();
+}
+
+// 表单重置
+function reset() {
+  form.value = {
+    hlScoreId: null,
+    modelId: null,
+    hlScore: null,
+    hlType: null,
+    hlDate: null,
+    createBy: null,
+    createTime: null,
+    updateBy: null,
+    updateTime: null,
+    remark: null
+  };
+  proxy.resetForm("hsRef");
+}
+
+/** 搜索按钮操作 */
+function handleQuery() {
+  queryParams.value.pageNum = 1;
+  getList();
+}
+
+/** 重置按钮操作 */
+function resetQuery() {
+  proxy.resetForm("queryRef");
+  handleQuery();
+}
+
+// 多选框选中数据
+function handleSelectionChange(selection) {
+  ids.value = selection.map(item => item.hlScoreId);
+  single.value = selection.length != 1;
+  multiple.value = !selection.length;
+}
+
+/** 新增按钮操作 */
+function handleAdd() {
+  reset();
+  open.value = true;
+  title.value = "添加健康度分数记录";
+}
+
+/** 修改按钮操作 */
+function handleUpdate(row) {
+  reset();
+  const _hlScoreId = row.hlScoreId || ids.value
+  getHs(_hlScoreId).then(response => {
+    form.value = response.data;
+    open.value = true;
+    title.value = "修改健康度分数记录";
+  });
+}
+
+/** 提交按钮 */
+function submitForm() {
+  proxy.$refs["hsRef"].validate(valid => {
+    if (valid) {
+      if (form.value.hlScoreId != null) {
+        updateHs(form.value).then(response => {
+          proxy.$modal.msgSuccess("修改成功");
+          open.value = false;
+          getList();
+        });
+      } else {
+        addHs(form.value).then(response => {
+          proxy.$modal.msgSuccess("新增成功");
+          open.value = false;
+          getList();
+        });
+      }
+    }
+  });
+}
+
+/** 删除按钮操作 */
+function handleDelete(row) {
+  const _hlScoreIds = row.hlScoreId || ids.value;
+  proxy.$modal.confirm('是否确认删除健康度分数记录编号为"' + _hlScoreIds + '"的数据项?').then(function() {
+    return delHs(_hlScoreIds);
+  }).then(() => {
+    getList();
+    proxy.$modal.msgSuccess("删除成功");
+  }).catch(() => {});
+}
+
+/** 导出按钮操作 */
+function handleExport() {
+  proxy.download('hl/hs/export', {
+    ...queryParams.value
+  }, `hs_${new Date().getTime()}.xlsx`)
+}
+
+getList();
+</script>