123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367 |
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <title>身体档案管理</title>
- <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
- <link rel="stylesheet" href="/assets/css/layui.css">
- <link rel="stylesheet" href="/assets/css/admin.css">
- </head>
- <body>
- <div class="layui-fluid">
- <div class="layui-card">
- <div class="layui-card-header">
- <h3>身体档案管理</h3>
- </div>
- <div class="layui-card-body">
- <!-- 搜索条件 -->
- <div class="layui-form layui-form-pane" lay-filter="search-form">
- <div class="layui-form-item">
- <div class="layui-inline">
- <label class="layui-form-label">关键词</label>
- <div class="layui-input-inline">
- <input type="text" name="search" placeholder="档案名称/关系" autocomplete="off" class="layui-input">
- </div>
- </div>
- <div class="layui-inline">
- <label class="layui-form-label">性别</label>
- <div class="layui-input-inline">
- <select name="gender">
- <option value="">全部</option>
- <option value="1">男</option>
- <option value="2">女</option>
- </select>
- </div>
- </div>
- <div class="layui-inline">
- <label class="layui-form-label">档案类型</label>
- <div class="layui-input-inline">
- <select name="is_own">
- <option value="">全部</option>
- <option value="1">本人档案</option>
- <option value="0">他人档案</option>
- </select>
- </div>
- </div>
- <div class="layui-inline">
- <button class="layui-btn" lay-submit lay-filter="search-btn">
- <i class="layui-icon layui-icon-search"></i> 搜索
- </button>
- <button type="reset" class="layui-btn layui-btn-primary">重置</button>
- </div>
- </div>
- </div>
- <!-- 工具栏 -->
- <div class="layui-row layui-col-space15">
- <div class="layui-col-md12">
- <div class="layui-btn-group">
- <button class="layui-btn" onclick="addProfile()">
- <i class="layui-icon layui-icon-add-1"></i> 新增档案
- </button>
- <button class="layui-btn layui-btn-danger" onclick="batchDelete()">
- <i class="layui-icon layui-icon-delete"></i> 批量删除
- </button>
- <button class="layui-btn layui-btn-normal" onclick="exportData()">
- <i class="layui-icon layui-icon-export"></i> 导出数据
- </button>
- <button class="layui-btn layui-btn-warm" onclick="showStatistics()">
- <i class="layui-icon layui-icon-chart"></i> 统计分析
- </button>
- </div>
- </div>
- </div>
- <!-- 数据表格 -->
- <table class="layui-hide" id="profileTable" lay-filter="profileTable"></table>
- </div>
- </div>
- </div>
- <!-- 操作按钮模板 -->
- <script type="text/html" id="operateBar">
- <div class="layui-btn-group">
- <a class="layui-btn layui-btn-xs" lay-event="detail">
- <i class="layui-icon layui-icon-list"></i> 详情
- </a>
- <a class="layui-btn layui-btn-xs layui-btn-normal" lay-event="measurements">
- <i class="layui-icon layui-icon-form"></i> 测量数据
- </a>
- <a class="layui-btn layui-btn-xs layui-btn-warm" lay-event="bodyTypes">
- <i class="layui-icon layui-icon-template-1"></i> 体型选择
- </a>
- <a class="layui-btn layui-btn-xs layui-btn-hot" lay-event="generateReport">
- <i class="layui-icon layui-icon-file"></i> 生成报告
- </a>
- <a class="layui-btn layui-btn-xs" lay-event="edit">
- <i class="layui-icon layui-icon-edit"></i> 编辑
- </a>
- <a class="layui-btn layui-btn-xs layui-btn-danger" lay-event="delete">
- <i class="layui-icon layui-icon-delete"></i> 删除
- </a>
- </div>
- </script>
- <!-- 性别模板 -->
- <script type="text/html" id="genderTpl">
- {{# if(d.gender == 1) { }}
- <span class="layui-badge layui-bg-blue">男</span>
- {{# } else if(d.gender == 2) { }}
- <span class="layui-badge layui-bg-red">女</span>
- {{# } else { }}
- <span class="layui-badge">未知</span>
- {{# } }}
- </script>
- <!-- 档案类型模板 -->
- <script type="text/html" id="isOwnTpl">
- {{# if(d.is_own == 1) { }}
- <span class="layui-badge layui-bg-green">本人档案</span>
- {{# } else { }}
- <span class="layui-badge layui-bg-orange">他人档案</span>
- {{# } }}
- </script>
- <!-- BMI模板 -->
- <script type="text/html" id="bmiTpl">
- {{# if(d.bmi > 0) { }}
- <span class="layui-badge
- {{# if(d.bmi_level == '偏瘦') { }}layui-bg-cyan
- {{# } else if(d.bmi_level == '正常') { }}layui-bg-green
- {{# } else if(d.bmi_level == '超重') { }}layui-bg-orange
- {{# } else { }}layui-bg-red{{# } }}">
- {{d.bmi}} ({{d.bmi_level}})
- </span>
- {{# } else { }}
- <span class="layui-badge">未测量</span>
- {{# } }}
- </script>
- <script src="/assets/js/layui.js"></script>
- <script>
- layui.use(['table', 'form', 'layer'], function(){
- var table = layui.table;
- var form = layui.form;
- var layer = layui.layer;
- // 渲染表格
- table.render({
- elem: '#profileTable',
- url: '{:url("index")}',
- toolbar: false,
- defaultToolbar: ['filter', 'exports', 'print'],
- cols: [[
- {type: 'checkbox', fixed: 'left'},
- {field: 'id', title: 'ID', width: 80, sort: true},
- {field: 'profile_name', title: '档案名称', width: 120},
- {field: 'user.username', title: '用户', width: 100},
- {field: 'gender', title: '性别', width: 80, templet: '#genderTpl'},
- {field: 'is_own', title: '类型', width: 100, templet: '#isOwnTpl'},
- {field: 'relation', title: '关系', width: 100},
- {field: 'age', title: '年龄', width: 80},
- {field: 'height', title: '身高(cm)', width: 100},
- {field: 'weight', title: '体重(kg)', width: 100},
- {field: 'bmi', title: 'BMI', width: 120, templet: '#bmiTpl'},
- {field: 'createtime', title: '创建时间', width: 160, templet: function(d){
- return layui.util.toDateString(d.createtime * 1000, 'yyyy-MM-dd HH:mm');
- }},
- {title: '操作', width: 350, align: 'center', fixed: 'right', toolbar: '#operateBar'}
- ]],
- page: true,
- limit: 15,
- limits: [15, 30, 50, 100],
- loading: true,
- text: {
- none: '暂无相关数据'
- }
- });
- // 监听搜索
- form.on('submit(search-btn)', function(data){
- table.reload('profileTable', {
- where: data.field,
- page: {curr: 1}
- });
- return false;
- });
- // 监听工具栏事件
- table.on('tool(profileTable)', function(obj){
- var data = obj.data;
- var layEvent = obj.event;
- switch(layEvent) {
- case 'detail':
- viewDetail(data.id);
- break;
- case 'measurements':
- manageMeasurements(data.id);
- break;
- case 'bodyTypes':
- manageBodyTypes(data.id);
- break;
- case 'generateReport':
- generateReport(data.id);
- break;
- case 'edit':
- editProfile(data.id);
- break;
- case 'delete':
- deleteProfile(data.id);
- break;
- }
- });
- // 监听行双击
- table.on('rowDouble(profileTable)', function(obj){
- viewDetail(obj.data.id);
- });
- });
- // 新增档案
- function addProfile() {
- layer.open({
- type: 2,
- title: '新增档案',
- area: ['800px', '600px'],
- content: '{:url("add")}',
- end: function() {
- layui.table.reload('profileTable');
- }
- });
- }
- // 查看详情
- function viewDetail(id) {
- layer.open({
- type: 2,
- title: '档案详情',
- area: ['1000px', '700px'],
- content: '{:url("detail")}?ids=' + id
- });
- }
- // 编辑档案
- function editProfile(id) {
- layer.open({
- type: 2,
- title: '编辑档案',
- area: ['800px', '600px'],
- content: '{:url("edit")}?ids=' + id,
- end: function() {
- layui.table.reload('profileTable');
- }
- });
- }
- // 删除档案
- function deleteProfile(id) {
- layer.confirm('确定要删除这个档案吗?删除后无法恢复!', {
- icon: 3,
- title: '提示'
- }, function(index) {
- layui.$.post('{:url("del")}', {ids: id}, function(res) {
- if (res.code === 1) {
- layer.msg('删除成功');
- layui.table.reload('profileTable');
- } else {
- layer.msg(res.msg);
- }
- });
- layer.close(index);
- });
- }
- // 管理测量数据
- function manageMeasurements(id) {
- layer.open({
- type: 2,
- title: '测量数据管理',
- area: ['1000px', '700px'],
- content: '{:url("measurements")}?profile_id=' + id
- });
- }
- // 管理体型选择
- function manageBodyTypes(id) {
- layer.open({
- type: 2,
- title: '体型选择管理',
- area: ['900px', '600px'],
- content: '{:url("bodyTypes")}?profile_id=' + id
- });
- }
- // 生成AI报告
- function generateReport(id) {
- layer.confirm('确定要生成AI分析报告吗?', {
- icon: 3,
- title: '提示'
- }, function(index) {
- var loading = layer.load(2, {content: '正在生成报告...'});
- layui.$.post('{:url("generateReport")}', {profile_id: id}, function(res) {
- layer.close(loading);
- if (res.code === 1) {
- layer.msg('报告生成成功');
- // 打开报告页面
- layer.open({
- type: 2,
- title: 'AI分析报告',
- area: ['1000px', '700px'],
- content: '{:url("viewReport")}?report_id=' + res.data.report_id
- });
- } else {
- layer.msg(res.msg);
- }
- });
- layer.close(index);
- });
- }
- // 批量删除
- function batchDelete() {
- var checkStatus = layui.table.checkStatus('profileTable');
- var data = checkStatus.data;
-
- if (data.length === 0) {
- layer.msg('请先选择要删除的档案');
- return;
- }
- var ids = data.map(function(item) {
- return item.id;
- }).join(',');
- layer.confirm('确定要删除选中的 ' + data.length + ' 个档案吗?', {
- icon: 3,
- title: '批量删除确认'
- }, function(index) {
- layui.$.post('{:url("del")}', {ids: ids}, function(res) {
- if (res.code === 1) {
- layer.msg('删除成功');
- layui.table.reload('profileTable');
- } else {
- layer.msg(res.msg);
- }
- });
- layer.close(index);
- });
- }
- // 导出数据
- function exportData() {
- layer.msg('导出功能开发中...');
- }
- // 显示统计
- function showStatistics() {
- layer.open({
- type: 2,
- title: '统计分析',
- area: ['1000px', '700px'],
- content: '{:url("statistics")}'
- });
- }
- </script>
- </body>
- </html>
|