从客户端(content="<span class="Apple-s...")中检测到有潜在危险的 Request.Form 值。

本文讨论了如何在Web应用中通过调整web.config文件的配置来解决检测到的潜在危险Request.Form值问题,包括将requestValidationMode设置为2.0以及禁用请求验证。同时强调了在设置后应进行手动输入检查的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从客户端(content="<span class="Apple-s...")中检测到有潜在危险的 Request.Form 值。

说明: 请求验证过程检测到有潜在危险的客户端输入值,对请求的处理已经中止。该值可能指示存在危及应用程序安全的尝试,如跨站点脚本攻击。若要允许页面重写应用程序请求验证设置,请将 httpRuntime 配置节中的 requestValidationMode 特性设置为 requestValidationMode="2.0"。示例: <httpRuntime requestValidationMode="2.0" />。设置此值后,可通过在 Page 指令或 <pages> 配置节中设置 validateRequest="false" 禁用请求验证。但是,在这种情况下,强烈建议应用程序显式检查所有输入。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkId=153133。 

异常详细信息: System.Web.HttpRequestValidationException: 从客户端(content="<span class="Apple-s...")中检测到有潜在危险的 Request.Form 值。

解决方法:

 1、在web.config的system.web节配置:  <httpRuntime requestValidationMode="2.0"/> 
     2、配置ValidateRequest="false"

转载于:https://www.cnblogs.com/huangyangblogs/p/3148170.html

&lt;!DOCTYPE html> &lt;!--suppress ALL --> &lt;html lang=&quot;zh-CN&quot;> &lt;head> &lt;meta charset=&quot;UTF-8&quot;> &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;> &lt;title>安全登录系统&lt;/title> &lt;style> :root { /* 合并后的统一变量 */ --white: #e9e9e9; --gray: #333; --blue: #0367a6; --lightblue: #008997; --button-radius: 0.7rem; --max-width: 758px; --max-height: 420px; font-size: 16px; font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Oxygen, Ubuntu, Cantarell, &quot;Open Sans&quot;, &quot;Helvetica Neue&quot;, sans-serif; } body { align-items: center; background: url(&quot;https://res.cloudinary.com/dbhnlktrv/image/upload/v1599997626/background_oeuhe7.jpg&quot;); background-attachment: fixed; background-position: center; background-repeat: no-repeat; background-size: cover; display: grid; height: 100vh; place-items: center; margin: 0; } .form__title { font-weight: 300; margin: 0; margin-bottom: 1.25rem; } .link { color: var(--gray); font-size: 0.9rem; margin: 1.5rem 0; text-decoration: none; } .container { background-color: var(--white); border-radius: var(--button-radius); box-shadow: 0 0.9rem 1.7rem rgba(0, 0, 0, 0.25), 0 0.7rem 0.7rem rgba(0, 0, 0, 0.22); height: var(--max-height); max-width: var(--max-width); overflow: hidden; position: relative; width: 100%; } .container__form { height: 100%; position: absolute; top: 0; transition: all 0.6s ease-in-out; } .container--signin { left: 0; width: 50%; z-index: 2; } .container.right-panel-active .container--signin { transform: translateX(100%); } .container--signup { left: 0; opacity: 0; width: 50%; z-index: 1; } .container.right-panel-active .container--signup { animation: show 0.6s; opacity: 1; transform: translateX(100%); z-index: 5; } .container__overlay { height: 100%; left: 50%; overflow: hidden; position: absolute; top: 0; transition: transform 0.6s ease-in-out; width: 50%; z-index: 100; } .container.right-panel-active .container__overlay { transform: translateX(-100%); } .overlay { background: url(&quot;https://cdn.pixabay.com/photo/2018/08/14/13/23/ocean-3605547_1280.jpg&quot;); background-attachment: fixed; background-position: center; background-repeat: no-repeat; background-size: cover; height: 100%; left: -100%; position: relative; transform: translateX(0); transition: transform 0.6s ease-in-out; width: 200%; } .container.right-panel-active .overlay { transform: translateX(50%); } .overlay__panel { align-items: center; display: flex; flex-direction: column; height: 100%; justify-content: center; position: absolute; text-align: center; top: 0; transform: translateX(0); transition: transform 0.6s ease-in-out; width: 50%; } .overlay--left { transform: translateX(-20%); } .container.right-panel-active .overlay--left { transform: translateX(0); } .overlay--right { right: 0; transform: translateX(0); } .container.right-panel-active .overlay--right { transform: translateX(20%); } .btn { background-color: var(--blue); background-image: linear-gradient(90deg, var(--blue) 0%, var(--lightblue) 74%); border-radius: 20px; border: 1px solid var(--blue); color: var(--white); cursor: pointer; font-size: 0.8rem; font-weight: bold; letter-spacing: 0.1rem; padding: 0.9rem 4rem; text-transform: uppercase; transition: transform 80ms ease-in; } .form>.btn { margin-top: 1.5rem; } .btn:active { transform: scale(0.95); } .btn:focus { outline: none; } .form { background-color: var(--white); display: flex; align-items: center; justify-content: center; flex-direction: column; padding: 0 3rem; height: 100%; text-align: center; } .input { background-color: #fff; border: none; padding: 0.9rem 0.9rem; margin: 0.5rem 0; width: 100%; box-sizing: border-box; } @keyframes show { 0%, 49.99% { opacity: 0; z-index: 1; } 50%, 100% { opacity: 1; z-index: 5; } } /* 新增功能样式 */ .loader { border: 4px solid rgba(0, 0, 0, 0.1); border-top: 4px solid #0367a6; border-radius: 50%; width: 30px; height: 30px; animation: spin 1s linear infinite; display: none; margin: 10px auto; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } .error-message { color: #ff3860; font-size: 0.85rem; margin-top: 0.5rem; height: 20px; display: flex; align-items: center; justify-content: center; } .hidden { display: none; } .password-container { position: relative; width: 100%; } .toggle-password { position: absolute; right: 10px; top: 50%; transform: translateY(-50%); background: none; border: none; color: var(--gray); cursor: pointer; font-size: 0.8rem; } .success-message { color: #23d160; font-size: 0.85rem; margin-top: 0.5rem; display: none; } &lt;/style> &lt;/head> &lt;body> &lt;!-- 登录页面容器 --> &lt;div id=&quot;loginPage&quot; class=&quot;container right-panel-active&quot;> &lt;!-- 注册表单 --> &lt;div class=&quot;container__form container--signup&quot;> &lt;form class=&quot;form&quot; id=&quot;signupForm&quot;> &lt;h2 class=&quot;form__title&quot;>注册账号&lt;/h2> &lt;input type=&quot;text&quot; placeholder=&quot;用户名&quot; class=&quot;input&quot; required id=&quot;signupUsername&quot;/> &lt;input type=&quot;email&quot; placeholder=&quot;邮箱&quot; class=&quot;input&quot; required id=&quot;signupEmail&quot;/> &lt;div class=&quot;password-container&quot;> &lt;input type=&quot;password&quot; placeholder=&quot;密码&quot; class=&quot;input&quot; required id=&quot;signupPassword&quot;/> &lt;button type=&quot;button&quot; class=&quot;toggle-password&quot;>👁️&lt;/button> &lt;/div> &lt;div class=&quot;error-message&quot; id=&quot;signupError&quot;>&lt;/div> &lt;div class=&quot;success-message&quot; id=&quot;signupSuccess&quot;>&lt;/div> &lt;button class=&quot;btn&quot; type=&quot;submit&quot;>注册&lt;/button> &lt;/form> &lt;/div> &lt;!-- 登录表单 --> &lt;div class=&quot;container__form container--signin&quot;> &lt;form class=&quot;form&quot; id=&quot;loginForm&quot;> &lt;h2 class=&quot;form__title&quot;>用户登录&lt;/h2> &lt;input type=&quot;email&quot; placeholder=&quot;邮箱&quot; class=&quot;input&quot; required id=&quot;loginEmail&quot;/> &lt;div class=&quot;password-container&quot;> &lt;input type=&quot;password&quot; placeholder=&quot;密码&quot; class=&quot;input&quot; required id=&quot;loginPassword&quot;/> &lt;button type=&quot;button&quot; class=&quot;toggle-password&quot;>👁️&lt;/button> &lt;/div> &lt;div class=&quot;loader&quot; id=&quot;loginLoader&quot;>&lt;/div> &lt;div class=&quot;error-message&quot; id=&quot;loginError&quot;>&lt;/div> &lt;button class=&quot;btn&quot; type=&quot;submit&quot;>登录&lt;/button> &lt;/form> &lt;/div> &lt;!-- 覆盖层 --> &lt;div class=&quot;container__overlay&quot;> &lt;div class=&quot;overlay&quot;> &lt;div class=&quot;overlay__panel overlay--left&quot;> &lt;button class=&quot;btn&quot; id=&quot;signInBtn&quot;>去登录&lt;/button> &lt;/div> &lt;div class=&quot;overlay__panel overlay--right&quot;> &lt;button class=&quot;btn&quot; id=&quot;signUpBtn&quot;>去注册&lt;/button> &lt;/div> &lt;/div> &lt;/div> &lt;/div> &lt;!-- 仪表盘页面 (登录成功后显示) --> &lt;div id=&quot;dashboardPage&quot; class=&quot;hidden&quot;> &lt;div class=&quot;container&quot; style=&quot;background-color: #ffffff; padding: 2rem; max-width: 800px;&quot;> &lt;h2>欢迎, &lt;span id=&quot;userDisplayName&quot;>&lt;/span>!&lt;/h2> &lt;p>您已成功登录!这是您的个人控制面板。&lt;/p> &lt;div style=&quot;margin-top: 2rem;&quot;> &lt;h3>账号信息&lt;/h3> &lt;p>电子邮箱: &lt;span id=&quot;userEmailDisplay&quot;>&lt;/span>&lt;/p> &lt;p>注册时间: &lt;span id=&quot;registrationDate&quot;>&lt;/span>&lt;/p> &lt;/div> &lt;button id=&quot;logoutBtn&quot; class=&quot;btn&quot; style=&quot;margin-top: 2rem;&quot;>退出登录&lt;/button> &lt;/div> &lt;/div> &lt;script> // ======== 页面元素 ======== const signInBtn = document.getElementById(&quot;signInBtn&quot;); const signUpBtn = document.getElementById(&quot;signUpBtn&quot;); const container = document.querySelector(&quot;.container&quot;); const loginForm = document.getElementById(&quot;loginForm&quot;); const signupForm = document.getElementById(&quot;signupForm&quot;); const loginLoader = document.getElementById(&quot;loginLoader&quot;); const loginError = document.getElementById(&quot;loginError&quot;); const signupError = document.getElementById(&quot;signupError&quot;); const signupSuccess = document.getElementById(&quot;signupSuccess&quot;); const loginPage = document.getElementById(&quot;loginPage&quot;); const dashboardPage = document.getElementById(&quot;dashboardPage&quot;); const logoutBtn = document.getElementById(&quot;logoutBtn&quot;); const userDisplayName = document.getElementById(&quot;userDisplayName&quot;); const userEmailDisplay = document.getElementById(&quot;userEmailDisplay&quot;); const registrationDate = document.getElementById(&quot;registrationDate&quot;); const togglePasswordBtns = document.querySelectorAll(&quot;.toggle-password&quot;); // ======== 密码可见性切换 ======== togglePasswordBtns.forEach(btn => { btn.addEventListener(&quot;click&quot;, function() { const input = this.previousElementSibling; const type = input.getAttribute(&quot;type&quot;) === &quot;password&quot; ? &quot;text&quot; : &quot;password&quot;; input.setAttribute(&quot;type&quot;, type); this.textContent = type === &quot;password&quot; ? &quot;👁️&quot; : &quot;🔒&quot;; }); }); // ======== 面板切换功能 ======== signInBtn.addEventListener(&quot;click&quot;, () => { container.classList.remove(&quot;right-panel-active&quot;); clearMessages(); }); signUpBtn.addEventListener(&quot;click&quot;, () => { container.classList.add(&quot;right-panel-active&quot;); clearMessages(); }); // ======== 注册功能 ======== signupForm.addEventListener(&quot;submit&quot;, function(e) { e.preventDefault(); const username = document.getElementById(&quot;signupUsername&quot;).value.trim(); const email = document.getElementById(&quot;signupEmail&quot;).value.trim(); const password = document.getElementById(&quot;signupPassword&quot;).value; // 验证用户名(至少3个字符) if (username.length &lt; 3) { showSignupError(&quot;用户名至少需要3个字符&quot;); return; } // 验证邮箱格式 const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; if (!emailRegex.test(email)) { showSignupError(&quot;请输入有效的电子邮箱&quot;); return; } // 验证密码强度(至少6个字符) if (password.length &lt; 6) { showSignupError(&quot;密码长度至少为6个字符&quot;); return; } // 检查用户是否已注册(伪代码) if (localStorage.getItem(email)) { showSignupError(&quot;该邮箱已注册&quot;); return; } // 保存注册信息 const userData = { username, email, password, // 实际应用中应存储哈希而非明文 registrationDate: new Date().toLocaleDateString() }; localStorage.setItem(email, JSON.stringify(userData)); // 注册成功 signupSuccess.textContent = &quot;注册成功!&quot;; signupSuccess.style.display = &quot;block&quot;; signupError.style.display = &quot;none&quot;; // 3秒后切换到登录面板 setTimeout(() => { container.classList.remove(&quot;right-panel-active&quot;); signupForm.reset(); signupSuccess.style.display = &quot;none&quot;; }, 3000); }); // ======== 登录功能 ======== loginForm.addEventListener(&quot;submit&quot;, function(e) { e.preventDefault(); const email = document.getElementById(&quot;loginEmail&quot;).value; const password = document.getElementById(&quot;loginPassword&quot;).value; // 显示加载状态 loginLoader.style.display = 'block'; loginError.style.display = 'none'; // 模拟登录请求延迟 setTimeout(() => { const authResult = authenticateUser(email, password); if (authResult.success) { // 保存登录状态 localStorage.setItem(&quot;isLoggedIn&quot;, &quot;true&quot;); localStorage.setItem(&quot;currentUser&quot;, JSON.stringify(authResult.userData)); // 更新仪表盘信息 updateDashboard(authResult.userData); // 切换到仪表盘 loginPage.classList.add(&quot;hidden&quot;); dashboardPage.classList.remove(&quot;hidden&quot;); } else { showLoginError(authResult.message); } loginLoader.style.display = 'none'; }, 1500); }); // ======== 退出功能 ======== logoutBtn.addEventListener(&quot;click&quot;, function() { // 清除登录状态 localStorage.removeItem(&quot;isLoggedIn&quot;); localStorage.removeItem(&quot;currentUser&quot;); // 返回登录页面 dashboardPage.classList.add(&quot;hidden&quot;); loginPage.classList.remove(&quot;hidden&quot;); // 重置表单 loginForm.reset(); clearMessages(); }); // ======== 辅助函数 ======== function authenticateUser(email, password) { // 从本地存储获取用户数据 const userData = localStorage.getItem(email); if (!userData) { return { success: false, message: &quot;邮箱未注册&quot; }; } const user = JSON.parse(userData); // 实际应用中应使用密码哈希比较 if (password !== user.password) { return { success: false, message: &quot;邮箱或密码错误&quot; }; } return { success: true, userData: user }; } function updateDashboard(userData) { userDisplayName.textContent = userData.username; userEmailDisplay.textContent = userData.email; registrationDate.textContent = userData.registrationDate; } function showLoginError(message) { loginError.textContent = message; loginError.style.display = 'block'; } function showSignupError(message) { signupError.textContent = message; signupError.style.display = 'block'; signupSuccess.style.display = &quot;none&quot;; } function clearMessages() { loginError.style.display = 'none'; signupError.style.display = 'none'; signupSuccess.style.display = 'none'; } // 页面加载时检查登录状态 window.addEventListener('DOMContentLoaded', () => { const isLoggedIn = localStorage.getItem('isLoggedIn&#39;) === 'true'; const currentUser = localStorage.getItem('currentUser&#39;); if (isLoggedIn && currentUser) { updateDashboard(JSON.parse(currentUser)); loginPage.classList.add(&quot;hidden&quot;); dashboardPage.classList.remove(&quot;hidden&quot;); } }); &lt;/script> &lt;/body> &lt;/html> 让这个代码登陆成功后可以写东西
最新发布
06-10
&lt;!-- 货物信息 table 页面 --> &lt;!DOCTYPE html> &lt;html lang=&quot;en&quot;> &lt;head> &lt;meta charset=&quot;UTF-8&quot;> &lt;meta http-equiv=&quot;X-UA-Compatible&quot; content=&quot;IE=edge&quot;> &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;> &lt;title>Document&lt;/title> &lt;link rel=&quot;stylesheet&quot; href=&quot;../../layui/css/layui.css&quot;> &lt;link rel=&quot;stylesheet&quot; href=&quot;../../css/diy.css&quot;> &lt;/head> &lt;body> &lt;div class=&quot;section1&quot;> &lt;!-- 内容主体区域 --> &lt;div class=&quot;manu manu-btns&quot; style=&quot;padding: 15px;&quot;> &lt;form class=&quot;layui-form&quot; action=&quot;&quot;> &lt;div class=&quot;form-input-box-s layui-form-item&quot;> &lt;div class=&quot;input-box&quot;> &lt;label class=&quot;layui-form-label&quot;>仓库名称&lt;/label> &lt;div class=&quot;layui-input-block block input-i&quot;> &lt;input type=&quot;text&quot; name=&quot;title&quot; required lay-verify=&quot;required&quot; autocomplete=&quot;off&quot; class=&quot;layui-input&quot;> &lt;/div> &lt;/div> &lt;div class=&quot;input-box&quot;> &lt;label class=&quot;layui-form-label&quot;>货物名称&lt;/label> &lt;div class=&quot;layui-input-block block input-i&quot;> &lt;input type=&quot;text&quot; name=&quot;title&quot; required lay-verify=&quot;required&quot; autocomplete=&quot;off&quot; class=&quot;layui-input&quot;> &lt;/div> &lt;/div> &lt;div class=&quot;input-box&quot;> &lt;label class=&quot;layui-form-label&quot;>货物分类&lt;/label> &lt;div class=&quot;layui-input-block block select&quot;> &lt;select name=&quot;interest&quot; lay-filter=&quot;classification_of_goods&quot; id=&quot;classification_of_goods&quot;> &lt;option value=&quot;&quot;>&lt;/option> &lt;/select> &lt;/div> &lt;/div> &lt;div class=&quot;input-box&quot;> &lt;label class=&quot;layui-form-label&quot;>存放位置&lt;/label> &lt;div class=&quot;layui-input-block block input-i&quot;> &lt;input type=&quot;text&quot; name=&quot;title&quot; required lay-verify=&quot;required&quot; autocomplete=&quot;off&quot; class=&quot;layui-input&quot;> &lt;/div> &lt;/div> &lt;/div> &lt;/form> &lt;div class=&quot;buts&quot;> &lt;button type=&quot;button&quot; class=&quot;layui-btn layui-btn-normal&quot; id=&quot;inquire&quot;>&lt;span>查询&lt;/span>&lt;/button> &lt;button type=&quot;button&quot; class=&quot;layui-btn layui-btn-normal&quot; id=&quot;reset&quot;>&lt;span>重置&lt;/span>&lt;/button> &lt;button type=&quot;button&quot; class=&quot;layui-btn layui-btn-normal&quot; id=&quot;delete&quot; style=&quot;display: none&quot;>&lt;span>删除&lt;/span>&lt;/button> &lt;button type=&quot;button&quot; class=&quot;layui-btn layui-btn-normal&quot; target=&quot;main_self_frame&quot; id=&quot;add&quot; style=&quot;display: none&quot;>&lt;span>新增&lt;/span>&lt;/button> &lt;/div> &lt;div class=&quot;Customize-the-box&quot;> &lt;div class=&quot;circle&quot;>&lt;/div> &lt;div class=&quot;circle&quot;>&lt;/div> &lt;div class=&quot;card-inner&quot;>&lt;/div> &lt;/div> &lt;/div> &lt;div class=&quot;table&quot;> &lt;table class=&quot;layui-hide&quot; id=&quot;goods_information&quot; lay-filter=&quot;goods_information&quot;>&lt;/table> &lt;script type=&quot;text/html&quot; id=&quot;toolbarDemo&quot;> &lt;div class=&quot;layui-btn-container&quot;> {{# if(d.add_procurement_information>0){ }} &lt;button class=&quot;layui-btn layui-btn-sm&quot; lay-event=&quot;procurement_information&quot;>采购&lt;/button> {{# } }} {{# if(d.add_storage_record>0){ }} &lt;button class=&quot;layui-btn layui-btn-sm&quot; lay-event=&quot;storage_record&quot;>入库&lt;/button> {{# } }} {{# if(d.add_outbound_record>0){ }} &lt;button class=&quot;layui-btn layui-btn-sm&quot; lay-event=&quot;outbound_record&quot;>出库&lt;/button> {{# } }} {{# if(d.add_inventory_records>0){ }} &lt;button class=&quot;layui-btn layui-btn-sm&quot; lay-event=&quot;inventory_records&quot;>盘点&lt;/button> {{# } }} {{# if(d.add_price_adjustment_record>0){ }} &lt;button class=&quot;layui-btn layui-btn-sm&quot; lay-event=&quot;price_adjustment_record&quot;>调价&lt;/button> {{# } }} {{# if(d.detail_flag){ }} &lt;button class=&quot;layui-btn layui-btn-sm&quot; lay-event=&quot;detail&quot;>详情&lt;/button> {{# } }} &lt;/div> &lt;/script> &lt;/div> &lt;/div> &lt;/body> &lt;script src=&quot;../../layui/layui.js&quot;>&lt;/script> &lt;script src=&quot;../../js/index.js&quot;>&lt;/script> &lt;script src=&quot;../../js/base.js&quot;>&lt;/script> &lt;script src=&quot;../../js/axios.min.js&quot;>&lt;/script> &lt;script> var BaseUrl = baseUrl() layui.use(['element', 'layer', 'laydate', 'util'], function () { var element = layui.element , layer = layui.layer , laydate = layui.laydate , util = layui.util , table = layui.table , $ = layui.$; let personInfo = JSON.parse(sessionStorage.personInfo) let user_group = personInfo.user_group let use_id = personInfo.user_id let url = BaseUrl + '/api/goods_information/get_list?like=0' let deletes = document.querySelector('#delete&#39;) let add = document.querySelector('#add&#39;) add.addEventListener('click', () => { layopen_add(&quot;./view_add.html&quot;) }) let sqlwhere let data_data = {size: 10, orderby: 'create_time desc'} let detail_flag = false; // 获取路径权限 async function get_list() { let {data: ren} = await axios.get(BaseUrl + '/api/auth/get_list', { params: { user_group: personInfo.user_group } }) } get_list() // 权限判断 /** * 获取路径对应操作权限 鉴权 * @param {String} action 操作名 */ function $check_action(path1, action = &quot;get&quot;) { var o = $get_power(path1); if (o && o[action] != 0 && o[action] != false) { return true; } return false; } if ($check_action('/goods_information/table', 'del&#39;) || $check_action('/goods_information/view', 'del&#39;)) { deletes.style.display = &quot;block&quot; } if ($check_action('/goods_information/table', 'add&#39;) || $check_action('/goods_information/view', 'add&#39;)) { add.style.display = &quot;block&quot; } if ($check_action('/goods_information/view', 'get&#39;) || $check_action('/goods_information/view', 'set&#39;)) { detail_flag = true; } /** * 获取权限 * @param {String} path 路由路径 */ function $get_power(path) { var list_data = JSON.parse(sessionStorage.list_data) var list = list_data; var obj; for (var i = 0; i &lt; list.length; i++) { var o = list[i]; if (o.path === path) { obj = o; break; } } return obj; } var path1 function getpath() { var list_data = JSON.parse(sessionStorage.list_data) for (var i = 0; i &lt; list_data.length; i++) { var o = list_data[i]; if (o.path === &quot;/goods_information/table&quot;) { console.log(o.path); path1 = o.path $get_power(o.path) } } } getpath() /** * 注册时是否有显示或操作字段的权限 * @param {String} action 操作名 * @param {String} field &lt;span>查询&lt;/span>的字段 * @param {String} path 路径 */ function $check_register_field(action, field, path1) { var o = $get_power(path1); var auth; if (o && o[action] != 0 && o[action] != false) { auth = o[&quot;field_&quot; + action]; } if (auth) { return auth.indexOf(field) !== -1; } return false; } /** * 是否有显示或操作字段的权限 * @param {String} action 操作名 * @param {String} field &lt;span>查询&lt;/span>的字段 */ function $check_field(action, field, path1) { var o = $get_power(path1); var auth; if (o && o[action] != 0 && o[action] != false) { auth = o[&quot;field_&quot; + action]; } if (auth) { return auth.indexOf(field) !== -1; } return false; } /** * 是否有显示或操作支付的权限 * @param {String} path 路径 */ function $check_pay(path) { let o = $get_power(path); if (o){ let option = JSON.parse(o.option); if (option.pay) return true } return false; } /** * 获取路径对应操作权限 鉴权 * @param {String} action 操作名 */ function $check_exam(path1, action = &quot;get&quot;) { var o = $get_power(path1); if (o) { var option = JSON.parse(o.option); if (option[action]) return true } return false; } function $check_option(path,op) { var o = $get_power(path); if (o){ var option = JSON.parse(o.option); if (option[op]) return true } return false; } let token = sessionStorage.token || null table.render({ elem: '#goods_information' , toolbar: true , url: url , headers: { 'x-auth-token': token, 'Content-Type': 'application/json' } ,limits: [10] , page: { layout: ['limit', 'count', 'prev', 'page', 'next', 'skip'] //,curr: 5 , groups: 1 , first: false , last: false } , cols: [[ {type: 'checkbox', fixed: 'left'} , { field: 'warehouse_name', width: 180, title: '仓库名称', sort: true } , { field: 'goods_number', width: 180, title: '货物编号', sort: true } , { field: 'name_of_goods', width: 180, title: '货物名称', sort: true } , { field: 'classification_of_goods', width: 180, title: '货物分类', sort: true } , { field: 'goods_specifications', width: 180, title: '货物规格', sort: true } , { field: 'price_of_goods', width: 180, title: '货物价格', sort: true } , { field: 'inventory_of_goods', width: 180, title: '货物库存', sort: true } , { field: 'storage_location', width: 180, title: '存放位置', sort: true } , { field: 'description_of_the_goods', width: 180, title: '货物描述', sort: true } , { field: 'create_time', width : '20%', title : '新增时间', sort : true, templet : &quot;&lt;div>{{layui.util.toDateString(d.create_time, 'yyyy-MM-dd HH:mm:ss&#39;)}}&lt;/div>&quot; } , { field: 'update_time', width : '20%', title : '更新时间', sort : true, templet : &quot;&lt;div>{{layui.util.toDateString(d.update_time, 'yyyy-MM-dd HH:mm:ss&#39;)}}&lt;/div>&quot; } , { field: 'operate', title : '操作', sort : true, width : '20%', fixed : 'right', toolbar : &quot;#toolbarDemo&quot; } ]] , done: function (res, curr, count) { // 表格渲染完成之后的回调 if (res.count == null) { // 无数据时直接返回了 return; } if ($check_field('get', 'warehouse_name', path1)) { // console.log(&quot;显示&quot;) } else { $(&quot;[data-field='warehouse_name']&quot;).css('display', 'none&#39;); } if ($check_field('get', 'goods_number', path1)) { // console.log(&quot;显示&quot;) } else { $(&quot;[data-field='goods_number']&quot;).css('display', 'none&#39;); } if ($check_field('get', 'name_of_goods', path1)) { // console.log(&quot;显示&quot;) } else { $(&quot;[data-field='name_of_goods']&quot;).css('display', 'none&#39;); } if ($check_field('get', 'classification_of_goods', path1)) { // console.log(&quot;显示&quot;) } else { $(&quot;[data-field='classification_of_goods']&quot;).css('display', 'none&#39;); } if ($check_field('get', 'goods_specifications', path1)) { // console.log(&quot;显示&quot;) } else { $(&quot;[data-field='goods_specifications']&quot;).css('display', 'none&#39;); } if ($check_field('get', 'price_of_goods', path1)) { // console.log(&quot;显示&quot;) } else { $(&quot;[data-field='price_of_goods']&quot;).css('display', 'none&#39;); } if ($check_field('get', 'inventory_of_goods', path1)) { // console.log(&quot;显示&quot;) } else { $(&quot;[data-field='inventory_of_goods']&quot;).css('display', 'none&#39;); } if ($check_field('get', 'storage_location', path1)) { // console.log(&quot;显示&quot;) } else { $(&quot;[data-field='storage_location']&quot;).css('display', 'none&#39;); } if ($check_field('get', 'description_of_the_goods', path1)) { // console.log(&quot;显示&quot;) } else { $(&quot;[data-field='description_of_the_goods']&quot;).css('display', 'none&#39;); } for (var i = 0; i &lt; res.data.length; i++) { let limits = res.data[i].procurement_information_limit_times; let index = i if (limits > 0) { let params = { source_table: &quot;goods_information&quot;, source_id: res.data[i].goods_information_id, source_user_id: use_id } axios.get(BaseUrl + '/api/procurement_information/count', { params }).then(count => { if (count) { if (count.data.result >= limits) { $('tr[data-index=&quot;' + index + '&quot;] .layui-table-cell&#39;).find(&quot;[lay-event='procurement_information']&quot;).hide(); } } }) } } for (var i = 0; i &lt; res.data.length; i++) { let limits = res.data[i].storage_record_limit_times; let index = i if (limits > 0) { let params = { source_table: &quot;goods_information&quot;, source_id: res.data[i].goods_information_id, source_user_id: use_id } axios.get(BaseUrl + '/api/storage_record/count', { params }).then(count => { if (count) { if (count.data.result >= limits) { $('tr[data-index=&quot;' + index + '&quot;] .layui-table-cell&#39;).find(&quot;[lay-event='storage_record']&quot;).hide(); } } }) } } for (var i = 0; i &lt; res.data.length; i++) { let limits = res.data[i].outbound_record_limit_times; let index = i if (limits > 0) { let params = { source_table: &quot;goods_information&quot;, source_id: res.data[i].goods_information_id, source_user_id: use_id } axios.get(BaseUrl + '/api/outbound_record/count', { params }).then(count => { if (count) { if (count.data.result >= limits) { $('tr[data-index=&quot;' + index + '&quot;] .layui-table-cell&#39;).find(&quot;[lay-event='outbound_record']&quot;).hide(); } } }) } } for (var i = 0; i &lt; res.data.length; i++) { let limits = res.data[i].inventory_records_limit_times; let index = i if (limits > 0) { let params = { source_table: &quot;goods_information&quot;, source_id: res.data[i].goods_information_id, source_user_id: use_id } axios.get(BaseUrl + '/api/inventory_records/count', { params }).then(count => { if (count) { if (count.data.result >= limits) { $('tr[data-index=&quot;' + index + '&quot;] .layui-table-cell&#39;).find(&quot;[lay-event='inventory_records']&quot;).hide(); } } }) } } for (var i = 0; i &lt; res.data.length; i++) { let limits = res.data[i].price_adjustment_record_limit_times; let index = i if (limits > 0) { let params = { source_table: &quot;goods_information&quot;, source_id: res.data[i].goods_information_id, source_user_id: use_id } axios.get(BaseUrl + '/api/price_adjustment_record/count', { params }).then(count => { if (count) { if (count.data.result >= limits) { $('tr[data-index=&quot;' + index + '&quot;] .layui-table-cell&#39;).find(&quot;[lay-event='price_adjustment_record']&quot;).hide(); } } }) } } // 重新渲染 } , page: true, request : { limitName: 'size' } , response: { statusName: 'code', //规定返回/Back的状态码字段为code statusCode : 200 //规定成功的状态码为200 } , parseData: function (res) { // 跨表按钮 if ($check_action('/procurement_information/table', 'add&#39;) || $check_action('/procurement_information/view', 'add&#39;)) { for (var i = 0; i &lt; res.result.list.length; i++) { res.result.list[i].add_procurement_information = 1 } } if ($check_action('/storage_record/table', 'add&#39;) || $check_action('/storage_record/view', 'add&#39;)) { for (var i = 0; i &lt; res.result.list.length; i++) { res.result.list[i].add_storage_record = 1 } } if ($check_action('/outbound_record/table', 'add&#39;) || $check_action('/outbound_record/view', 'add&#39;)) { for (var i = 0; i &lt; res.result.list.length; i++) { res.result.list[i].add_outbound_record = 1 } } if ($check_action('/inventory_records/table', 'add&#39;) || $check_action('/inventory_records/view', 'add&#39;)) { for (var i = 0; i &lt; res.result.list.length; i++) { res.result.list[i].add_inventory_records = 1 } } if ($check_action('/price_adjustment_record/table', 'add&#39;) || $check_action('/price_adjustment_record/view', 'add&#39;)) { for (var i = 0; i &lt; res.result.list.length; i++) { res.result.list[i].add_price_adjustment_record = 1 } } if ($check_pay('/goods_information/table&#39;)) { for (var i = 0; i &lt; res.result.list.length; i++) { res.result.list[i].check_pay = true } } if ($check_action('/goods_information/view', 'set&#39;) || $check_action('/goods_information/view', 'get&#39;)) { for (var i = 0; i &lt; res.result.list.length; i++) { res.result.list[i].detail_flag = detail_flag } } return { &quot;code&quot;: 200, &quot;msg&quot;: &quot;&quot;, &quot;count&quot;: res.result.count, &quot;data&quot;: res.result.list } } , where: data_data }) ; table.on('tool(goods_information)', function (obj) { var data = obj.data; if (obj.event === 'detail&#39;) { // window.location.href = &quot;./view_add.html?&quot; + data.goods_information_id; layopen_dateil(&quot;./view_add.html?&quot; + data.goods_information_id) } else if (obj.event === 'procurement_information&#39;){ data.source_table = &quot;goods_information&quot; data.source_id = data.goods_information_id data.source_user_id = use_id sessionStorage.setItem('data', JSON.stringify(data)) //window.location.href = &quot;../procurement_information/view_add.html?&quot; layopen_dateil(&quot;../procurement_information/view_add.html?&quot;) } else if (obj.event === 'storage_record&#39;){ data.source_table = &quot;goods_information&quot; data.source_id = data.goods_information_id data.source_user_id = use_id sessionStorage.setItem('data', JSON.stringify(data)) //window.location.href = &quot;../storage_record/view_add.html?&quot; layopen_dateil(&quot;../storage_record/view_add.html?&quot;) } else if (obj.event === 'outbound_record&#39;){ data.source_table = &quot;goods_information&quot; data.source_id = data.goods_information_id data.source_user_id = use_id sessionStorage.setItem('data', JSON.stringify(data)) //window.location.href = &quot;../outbound_record/view_add.html?&quot; layopen_dateil(&quot;../outbound_record/view_add.html?&quot;) } else if (obj.event === 'inventory_records&#39;){ data.source_table = &quot;goods_information&quot; data.source_id = data.goods_information_id data.source_user_id = use_id sessionStorage.setItem('data', JSON.stringify(data)) //window.location.href = &quot;../inventory_records/view_add.html?&quot; layopen_dateil(&quot;../inventory_records/view_add.html?&quot;) } else if (obj.event === 'price_adjustment_record&#39;){ data.source_table = &quot;goods_information&quot; data.source_id = data.goods_information_id data.source_user_id = use_id sessionStorage.setItem('data', JSON.stringify(data)) //window.location.href = &quot;../price_adjustment_record/view_add.html?&quot; layopen_dateil(&quot;../price_adjustment_record/view_add.html?&quot;) } }); //下拉框 async function initss(url, id, ff) { // 拿到单选框的父级节点 var select = document.querySelector(&quot;#&quot;+id) var op1 = document.createElement('option&#39;) select.appendChild(op1) // 收集数据 长度 var count // 收集数据 数组 var arr = [] let {data: res} = await axios.get(url) count = res.result.count arr = res.result.list for (var i = 0; i &lt; arr.length; i++) { // 创建节点 var op = document.createElement('option&#39;) // 给节点赋 op.innerHTML = arr[i][ff] op.value = arr[i][ff] // 新增/Add节点 select.appendChild(op) layui.form.render('select&#39;) } } initss(BaseUrl + '/api/classification_of_goods/get_list?', &quot;classification_of_goods&quot;, &quot;classification_of_goods&quot;) let classification_of_goods layui.form.on('select(classification_of_goods)', function (data) { request['classification_of_goods'] = data.elem[data.elem.selectedIndex].text }); // 请求参数: let request = { like: 0, size: 10, page: 1, 'warehouse_name': '', 'name_of_goods': '', 'classification_of_goods': '', 'storage_location': '', } if (user_group != &quot;管理员&quot;) { request['orderby'] = 'create_time desc' if (sqlwhere){ request['sqlwhere'] = sqlwhere } } // &lt;span>重置&lt;/span>/Reset参数 let resetName = data_data // 下拉框的&lt;span>重置&lt;/span>/Reset参数 let resetSelect = [] //下拉框&lt;span>重置&lt;/span>/Reset参数 fun('goods_information', BaseUrl + '/api/goods_information/del', 'goods_information_id', request, resetName, resetSelect ) }) &lt;/script> &lt;/html> 分析以上代码哪些是查询功能,不要自己写
06-04
&lt;!DOCTYPE html> &lt;html lang=&quot;zh-CN&quot;> &lt;head> &lt;meta charset=&quot;UTF-8&quot;> &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;> &lt;title>板材库存查询系统&lt;/title> &lt;script src=&quot;https://code.jquery.com/jquery-3.6.0.min.js&quot;>&lt;/script> &lt;link href=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css&quot; rel=&quot;stylesheet&quot;> &lt;!-- 引入 Popper.js 和 Bootstrap JS --> &lt;script src=&quot;https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.6/dist/umd/popper.min.js&quot;>&lt;/script> &lt;script src=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.min.js&quot;>&lt;/script> &lt;script src=&quot;../js/main.js&quot;>&lt;/script> &lt;style> .card-header { background: linear-gradient(to right, #1e3c72, #2a5298); color: white; } .search-section { box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); border-radius: 10px; } .result-section { max-height: 70vh; overflow: auto; border-left: 3px solid #1e3c72; } .table-hover tbody tr:hover { background-color: rgba(42, 82, 152, 0.05); } .material-kucun { font-weight: 700; color: #1e3c72; } .material-kucun-low { color: #dc3545 !important; } .no-results { min-height: 200px; display: flex; align-items: center; justify-content: center; } .stats-card { border-radius: 8px; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08); } body { background-color: #f8f9fa; padding-bottom: 2rem; } .search-control { position: relative; } .search-icon { position: absolute; left: 12px; top: 12px; color: #6c757d; } .form-control.with-icon { padding-left: 35px; } .highlight { background-color: rgba(255, 255, 0, 0.3) !important; } .info-badge { font-size: 0.8rem; font-weight: normal; } &lt;/style> &lt;/head> &lt;body> &lt;div class=&quot;container py-4&quot;> &lt;!-- 标题部分 --> &lt;div class=&quot;text-center mb-4&quot;> &lt;h1 class=&quot;text-primary&quot;>&lt;i class=&quot;bi bi-boxes&quot;>&lt;/i> 板材库存管理系统&lt;/h1> &lt;p class=&quot;text-muted&quot;>查询订单、产品、板材及库存信息&lt;/p> &lt;/div> &lt;!-- 统计卡片 --> &lt;div class=&quot;row mb-4&quot;> &lt;div class=&quot;col-md-3&quot;> &lt;div class=&quot;card stats-card border-primary&quot;> &lt;div class=&quot;card-body&quot;> &lt;h5 class=&quot;card-title&quot;>订单总数&lt;/h5> &lt;p class=&quot;card-text fs-3 text-primary&quot; id=&quot;orderCount&quot;>0&lt;/p> &lt;/div> &lt;/div> &lt;/div> &lt;div class=&quot;col-md-3&quot;> &lt;div class=&quot;card stats-card border-info&quot;> &lt;div class=&quot;card-body&quot;> &lt;h5 class=&quot;card-title&quot;>产品种类&lt;/h5> &lt;p class=&quot;card-text fs-3 text-info&quot; id=&quot;productCount&quot;>0&lt;/p> &lt;/div> &lt;/div> &lt;/div> &lt;div class=&quot;col-md-3&quot;> &lt;div class=&quot;card stats-card border-success&quot;> &lt;div class=&quot;card-body&quot;> &lt;h5 class=&quot;card-title&quot;>板材库存&lt;/h5> &lt;p class=&quot;card-text fs-3 text-success&quot; id=&quot;materialCount&quot;>0&lt;/p> &lt;/div> &lt;/div> &lt;/div> &lt;div class=&quot;col-md-3&quot;> &lt;div class=&quot;card stats-card border-warning&quot;> &lt;div class=&quot;card-body&quot;> &lt;h5 class=&quot;card-title&quot;>库存总量&lt;/h5> &lt;p class=&quot;card-text fs-3 text-warning&quot; id=&quot;totalStock&quot;>0&lt;/p> &lt;/div> &lt;/div> &lt;/div> &lt;/div> &lt;!-- 搜索区域 --> &lt;div class=&quot;card search-section mb-4&quot;> &lt;div class=&quot;card-header&quot;> &lt;h5 class=&quot;mb-0&quot;>&lt;i class=&quot;bi bi-search me-2&quot;>&lt;/i>高级搜索&lt;/h5> &lt;/div> &lt;div class=&quot;card-body&quot;> &lt;div class=&quot;row g-3&quot;> &lt;!-- 订单搜索 --> &lt;div class=&quot;col-md-6&quot;> &lt;div class=&quot;search-control&quot;> &lt;i class=&quot;bi bi-clipboard-search search-icon&quot;>&lt;/i> &lt;input type=&quot;text&quot; class=&quot;form-control with-icon&quot; id=&quot;orderSearch&quot; placeholder=&quot;搜索订单号...&quot; aria-label=&quot;订单号搜索&quot;> &lt;/div> &lt;/div> &lt;!-- 产品搜索 --> &lt;div class=&quot;col-md-6&quot;> &lt;div class=&quot;search-control&quot;> &lt;i class=&quot;bi bi-grid search-icon&quot;>&lt;/i> &lt;input type=&quot;text&quot; class=&quot;form-control with-icon&quot; id=&quot;productSearch&quot; placeholder=&quot;搜索产品编号...&quot; aria-label=&quot;产品编号搜索&quot;> &lt;/div> &lt;/div> &lt;!-- 板材搜索 --> &lt;div class=&quot;col-md-4&quot;> &lt;div class=&quot;search-control&quot;> &lt;i class=&quot;bi bi-box search-icon&quot;>&lt;/i> &lt;input type=&quot;text&quot; class=&quot;form-control with-icon&quot; id=&quot;materialSearch&quot; placeholder=&quot;搜索板材ID或材质...&quot; aria-label=&quot;板材搜索&quot;> &lt;/div> &lt;/div> &lt;!-- 木皮搜索 --> &lt;div class=&quot;col-md-4&quot;> &lt;div class=&quot;search-control&quot;> &lt;i class=&quot;bi bi-tree search-icon&quot;>&lt;/i> &lt;input type=&quot;text&quot; class=&quot;form-control with-icon&quot; id=&quot;woodSearch&quot; placeholder=&quot;搜索木皮名称...&quot; aria-label=&quot;木皮搜索&quot;> &lt;/div> &lt;/div> &lt;!-- 厚度范围 --> &lt;div class=&quot;col-md-4&quot;> &lt;div class=&quot;input-group&quot;> &lt;span class=&quot;input-group-text&quot;>&lt;i class=&quot;bi bi-arrows-vertical&quot;>&lt;/i>&lt;/span> &lt;input type=&quot;number&quot; class=&quot;form-control&quot; id=&quot;minThickness&quot; placeholder=&quot;最小厚度(mm)&quot; min=&quot;0&quot; step=&quot;0.1&quot;> &lt;span class=&quot;input-group-text&quot;>~&lt;/span> &lt;input type=&quot;number&quot; class=&quot;form-control&quot; id=&quot;maxThickness&quot; placeholder=&quot;最大厚度(mm)&quot; min=&quot;0&quot; step=&quot;0.1&quot;> &lt;button class=&quot;btn btn-primary&quot; type=&quot;button&quot; id=&quot;thicknessBtn&quot;> &lt;i class=&quot;bi bi-arrow-right&quot;>&lt;/i> &lt;/button> &lt;/div> &lt;/div> &lt;!-- 库存阈 --> &lt;div class=&quot;col-md-12&quot;> &lt;div class=&quot;d-flex align-items-center&quot;> &lt;span class=&quot;me-2&quot;>库存阈:&lt;/span> &lt;div class=&quot;form-check form-check-inline&quot;> &lt;input class=&quot;form-check-input&quot; type=&quot;checkbox&quot; id=&quot;lowStockCheck&quot; checked> &lt;label class=&quot;form-check-label&quot; for=&quot;lowStockCheck&quot;>显示低库存&lt;small class=&quot;text-danger ms-1&quot;>&lt;i class=&quot;bi bi-exclamation-triangle&quot;>&lt;/i>&lt;/small>&lt;/label> &lt;/div> &lt;div class=&quot;form-check form-check-inline&quot;> &lt;input class=&quot;form-check-input&quot; type=&quot;checkbox&quot; id=&quot;normalStockCheck&quot; checked> &lt;label class=&quot;form-check-label&quot; for=&quot;normalStockCheck&quot;>显示正常库存&lt;/label> &lt;/div> &lt;div class=&quot;ms-auto&quot;> &lt;button class=&quot;btn btn-primary me-2&quot; id=&quot;searchBtn&quot;> &lt;i class=&quot;bi bi-search me-1&quot;>&lt;/i>搜索 &lt;/button> &lt;button class=&quot;btn btn-outline-secondary&quot; id=&quot;resetBtn&quot;> &lt;i class=&quot;bi bi-arrow-counterclockwise me-1&quot;>&lt;/i>重置 &lt;/button> &lt;/div> &lt;/div> &lt;/div> &lt;/div> &lt;/div> &lt;/div> &lt;!-- 结果区域 --> &lt;div class=&quot;card&quot;> &lt;div class=&quot;card-header d-flex justify-content-between align-items-center&quot;> &lt;h5 class=&quot;mb-0&quot;>&lt;i class=&quot;bi bi-table me-2&quot;>&lt;/i>查询结果&lt;/h5> &lt;div class=&quot;text-secondary&quot;> &lt;span id=&quot;resultCount&quot;>0&lt;/span> 条记录 &lt;span class=&quot;ms-2&quot;>&lt;i class=&quot;bi bi-info-circle&quot;>&lt;/i> &lt;small>实时数据更新时间: &lt;span id=&quot;lastUpdate&quot;>--:--:--&lt;/span>&lt;/small>&lt;/span> &lt;/div> &lt;/div> &lt;div class=&quot;card-body result-section&quot;> &lt;div class=&quot;table-responsive&quot;> &lt;table class=&quot;table table-hover&quot; id=&quot;resultTable&quot;> &lt;thead class=&quot;table-light sticky-top&quot;> &lt;tr> &lt;th>订单号&lt;/th> &lt;th>产品信息&lt;/th> &lt;th>板材&lt;/th> &lt;th>材质&lt;/th> &lt;th>木皮1&lt;/th> &lt;th>木皮2&lt;/th> &lt;th>厚度(mm)&lt;/th> &lt;th>库存&lt;/th> &lt;th>操作&lt;/th> &lt;/tr> &lt;/thead> &lt;tbody id=&quot;resultBody&quot;> &lt;!-- 数据加载中 --> &lt;tr id=&quot;loadingRow&quot;> &lt;td colspan=&quot;9&quot; class=&quot;text-center py-5&quot;> &lt;div class=&quot;d-flex align-items-center justify-content-center&quot;> &lt;div class=&quot;spinner-border text-primary&quot; role=&quot;status&quot;> &lt;span class=&quot;visually-hidden&quot;>加载中...&lt;/span> &lt;/div> &lt;div class=&quot;ms-3&quot;>正在加载数据,请稍候...&lt;/div> &lt;/div> &lt;/td> &lt;/tr> &lt;/tbody> &lt;/table> &lt;/div> &lt;!-- 空结果提示 --> &lt;div id=&quot;noResults&quot; class=&quot;no-results text-center py-5&quot; style=&quot;display: none;&quot;> &lt;div> &lt;i class=&quot;bi bi-inboxes text-muted&quot; style=&quot;font-size: 3rem;&quot;>&lt;/i> &lt;h4 class=&quot;mt-3 text-muted&quot;>没有找到匹配的记录&lt;/h4> &lt;p class=&quot;text-muted&quot;>请尝试调整您的搜索条件&lt;/p> &lt;/div> &lt;/div> &lt;/div> &lt;/div> &lt;/div> &lt;script type=&quot;text/javascript&quot;> document.addEventListener(&quot;DOMContentLoaded&quot;, function () { const modal = new bootstrap.Modal(document.getElementById('myModal&#39;), { keyboard: false // 配置选项 }); // 手动触发 Modal document.getElementById('launchModal&#39;).addEventListener('click', function () { modal.show(); }); }); &lt;/script> &lt;script src=&quot;../js/test.js?222&quot;>&lt;/script> 添加分别创建订单产品组件板材按钮弹窗,编辑订单时出现产品下拉框,下拉框旁边有添加按钮,点下弹出添加产品弹窗 以此类推 不需要js部分
06-07
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值