LIJIAN преди 1 месец
родител
ревизия
4afd4f5858
променени са 2 файла, в които са добавени 89 реда и са изтрити 5 реда
  1. 68 4
      ema-admin/src/main/resources/web/pages/assets/assets_form.html
  2. 21 1
      ema-admin/src/main/resources/web/pages/assets/assets_list.html

+ 68 - 4
ema-admin/src/main/resources/web/pages/assets/assets_form.html

@@ -38,7 +38,10 @@
             <div class="layui-form-item">
                 <label class="layui-form-label"><span class="required">*</span>管理部门</label>
                 <div class="layui-input-inline">
-                    <input type="text" name="deptName" lay-verify="required" placeholder="请输入资产管理部门" class="layui-input">
+                    <input type="hidden" name="deptName" id="deptNameHidden">
+                    <select id="deptSelect" lay-verify="required" lay-search>
+                        <option value="">请选择或输入管理部门</option>
+                    </select>
                 </div>
             </div>
 
@@ -182,17 +185,78 @@
             var assetTypeParam = Common.getQueryString('assetType');
             var isEdit = !!id;
 
+            var assetData = null;
+
+            // 先加载资产数据(编辑时),等完成后加载部门列表(用于回显)
             if (isEdit) {
-                Common.get(Config.api.assets.getInfo + '/' + id, function(res) {
+                loadAssetData(id, function() {
+                    loadDepartments();
+                });
+            } else if (assetTypeParam) {
+                $('input[name="assetType"]').val(assetTypeParam);
+                loadDepartments();
+            } else {
+                loadDepartments();
+            }
+
+            function loadDepartments() {
+                Common.get(Config.api.department.list, function(res) {
+                    if (res.code === 200 && res.data) {
+                        var depts = res.data || [];
+                        var html = '<option value="">请选择或输入管理部门</option>';
+                        depts.forEach(function(dept) {
+                            html += '<option value="' + dept.deptName + '">' + dept.deptName + '</option>';
+                        });
+                        $('#deptSelect').html(html);
+
+                        // 部门加载完成后,如果有资产数据则回显部门
+                        if (assetData && assetData.deptName) {
+                            $('#deptSelect').val(assetData.deptName);
+                            $('#deptNameHidden').val(assetData.deptName);
+                        }
+                        form.render('select');
+                    }
+                });
+            }
+
+            // 监听部门选择变化,同步到隐藏字段
+            form.on('select(deptSelect)', function(data) {
+                var val = data.value;
+                // 如果选择的值不在下拉列表中(用户手动输入),则添加到option中
+                if (val && data.elem.find('option[value="' + val + '"]').length === 0) {
+                    var html = '<option value="' + val + '">' + val + '</option>';
+                    $('#deptSelect').append(html);
+                    form.render('select');
+                }
+                $('#deptNameHidden').val(val);
+            });
+
+            // 监听部门输入框的输入事件(支持手动输入)
+            $('#deptSelect').siblings('.layui-form-select').find('input').on('input', function() {
+                var val = $(this).val();
+                $('#deptNameHidden').val(val);
+            });
+
+            function loadAssetData(assetId, callback) {
+                Common.get(Config.api.assets.getInfo + '/' + assetId, function(res) {
                     if (res.code === 200) {
+                        assetData = res.data;
                         form.val('assetsForm', res.data);
+                        // 设置隐藏字段
+                        $('#deptNameHidden').val(res.data.deptName);
                     }
+                    if (callback) callback();
                 });
-            } else if (assetTypeParam) {
-                $('input[name="assetType"]').val(assetTypeParam);
             }
 
             form.on('submit(submitForm)', function(data) {
+                // 提交前确保隐藏字段有值(从输入框获取最新值)
+                var deptVal = $('#deptSelect').siblings('.layui-form-select').find('input').val();
+                if (deptVal) {
+                    $('#deptNameHidden').val(deptVal);
+                }
+                // 确保表单数据包含deptName
+                data.field.deptName = $('#deptNameHidden').val() || deptVal;
                 Common.ajax({
                     url: isEdit ? Config.api.assets.update : Config.api.assets.save,
                     type: isEdit ? 'PUT' : 'POST',

+ 21 - 1
ema-admin/src/main/resources/web/pages/assets/assets_list.html

@@ -210,7 +210,9 @@
                         </div>
                         <div class="layui-inline">
                             <div class="layui-input-inline">
-                                <input type="text" name="deptName" placeholder="管理部门" class="layui-input">
+                                <select name="deptName" id="searchDeptSelect" lay-search>
+                                    <option value="">管理部门</option>
+                                </select>
                             </div>
                         </div>
                         <div class="layui-inline">
@@ -403,6 +405,21 @@
             var historyTableIns = null;
             var assetTableIns = null;
 
+            // 加载部门列表(用于搜索)
+            function loadSearchDepartments() {
+                Common.get(Config.api.department.list, function(res) {
+                    if (res.code === 200 && res.data) {
+                        var depts = res.data || [];
+                        var html = '<option value="">管理部门</option>';
+                        depts.forEach(function(dept) {
+                            html += '<option value="' + dept.deptName + '">' + dept.deptName + '</option>';
+                        });
+                        $('#searchDeptSelect').html(html);
+                        form.render('select');
+                    }
+                });
+            }
+
             // 加载资产详情
             function loadAssetInfo(assetId) {
                 Common.get(Config.api.assets.getInfo + '/' + assetId, function(res) {
@@ -537,6 +554,9 @@
             // 初始化资产表格
             initAssetTable();
 
+            // 加载部门列表用于搜索
+            loadSearchDepartments();
+
             // 搜索资产
             $('#btnSearchAsset').click(function() {
                 searchAssetList();