Index.cshtml 5.97 KB
@using HHECS.DAQWebClient.Model
@using HHECS.DAQShared.Models
@model EquipmentDataQueue
@inject IFreeSql freeSql
@{
    ViewData["Title"] = "待推送数据";
    var equipmentTypes = freeSql.Queryable<EquipmentType>().ToList(x => new SelectListItem
    {
        Value = x.Code.ToString(),
        Text = x.Name
    });
}

<div class="layui-card">
    <div class="layui-card-body">
        <form class="layui-form layui-form-pane" id="form-val-filter" lay-filter="form-val-filter" action="">
            <div class="layui-inline">
                <label class="layui-form-label">设备编号</label>
                <div class="layui-input-inline">
                    <input type="text" asp-for="EquipmentCode" placeholder="" class="layui-input">
                </div>
            </div>
            <div class="layui-inline">
                <label class="layui-form-label">设备名称</label>
                <div class="layui-input-inline">
                    <input type="text" asp-for="EquipmentName" placeholder="" class="layui-input">
                </div>
            </div>
            <div class="layui-inline">
                <label class="layui-form-label">设备类型</label>
                <div class="layui-input-inline">
                    <select asp-for="EquipmentTypeCode" asp-items="equipmentTypes">
                        <option value="" selected>全部</option>
                    </select>
                </div>
            </div>
        </form>
    </div>
</div>
<div class="layui-panel">
    <table class="layui-hide" id="tableDemo" lay-filter="tableDemo"></table>
</div>
<script type="text/html" id="toolbarDemo">
    <div class="layui-btn-container">
        <button class="layui-btn layui-btn-sm" lay-event="search">
            <i class="layui-icon layui-icon-search"></i>
            查询
        </button>
        <button class="layui-btn layui-btn-sm layui-btn-primary" lay-event="refresh">
            <i class="layui-icon layui-icon-refresh"></i>
            重置
        </button>
    </div>
</script>

<script type="text/html" id="toolDisable">
    <input type="checkbox" name="isCommit" disabled value="{{= d.isCommit }}" lay-skin="switch" {{= d.isCommit == true ? "checked" : "" }} title="已提交|未提交">
</script>
<partial name="_EquipmentTypeCodeFormatPartial" model="equipmentTypes" />
<partial name="_DateTimeFormatPartial" />
<script type="text/html" id="toolDemo">
    <div class="layui-clear-space">
        <a class="layui-btn layui-btn-xs layui-btn-primary" lay-event="detail"><i class="layui-icon layui-icon-about"></i>详情</a>
    </div>
</script>
@section Scripts{
    <script type="text/javascript">
        layui.use(['table', 'form', 'util'], function () {
            var table = layui.table;
            var form = layui.form;
            var util = layui.util;
            var $ = layui.$;

            // 创建渲染实例
            table.render({
                elem: '#tableDemo',
                url: 'Load', // 此处为静态模拟数据,实际使用时需换成真实接口
                toolbar: '#toolbarDemo',
                defaultToolbar: ['filter', 'exports', 'print'],
                height: 'full-200', // 最大高度减去其他容器已占有的高度差
                cellMinWidth: 80,
                page: true,
                cols: [[
                    { type: 'checkbox', fixed: 'left' },
                    { field: 'id', fixed: 'left', title: 'ID', hide: true },
                    { field: 'equipmentCode', fixed: 'left', width: 240, title: '设备编号' },
                    { field: 'equipmentName', width: 180, title: '设备名称' },
                    { field: 'equipmentTypeCode', width: 160, title: '设备类型', templet: '#toolEquipmentTypeCode' },
                    { field: 'reported', width: 200, title: '数据' },
                    { field: 'version', width: 30, title: '版本' },
                    { field: 'sourceTimestamp', width: 150, title: '时间戳' },
                    { field: 'isCommit', width: 100, title: '状态', templet: '#toolDisable' },
                    { field: 'createdBy', title: '创建人', hide: true },
                    { field: 'created', width: 160, title: '创建时间', templet: '#toolCreated' },
                    { field: 'updatedBy', title: '更新人', hide: true },
                    { field: 'updated', width: 160, title: '更新时间', templet: '#toolUpdated' },
                    { fixed: 'right', title: '操作', width: 70, templet: '#toolDemo' }
                ]],
                error: function (res, msg) {
                    console.log(res, msg)
                }
            });

            // 工具栏事件
            table.on('toolbar(tableDemo)', function (obj) {
                var id = obj.config.id;
                var checkStatus = table.checkStatus(id);
                var othis = lay(this);
                switch (obj.event) {
                    case 'search':
                        search();
                        break;
                    case 'refresh':
                        refresh();
                        break;
                };
            });

            // 触发单元格工具事件
            table.on('tool(tableDemo)', function (obj) {
                let data = obj.data; // 获得当前行数据
                if (obj.event === 'detail') {
                    detail(data);
                }
            })

            function search() {
                let data = form.val('form-val-filter');
                table.reloadData('tableDemo', {
                    where: data,
                    scrollPos: true,
                });
            }

            function refresh() {
                $("#form-val-filter")[0].reset();
                table.reloadData('tableDemo', {
                    where: {},
                });
            }

            function detail(data) {
                let json = JSON.parse(data.reported)
                layer.alert(util.escape(JSON.stringify(json)));
            }
        });
    </script>
}