在车辆租赁行业,数据的高效管理与分析对于企业的运营决策、资源调配及客户服务优化至关重要。自建 Excel 实现多表统计交互,如同为行业装上了效能驱动引擎,助力企业在复杂多变的市场环境中稳健前行。

一、精准资源管理,优化车辆调配

车辆租赁企业拥有多种类型、不同状态的车辆资源,分布于各个租赁站点。通过自建 Excel 并实现多表统计交互,可将车辆信息表、租赁订单表、站点信息表等进行关联分析。例如,在车辆信息表中记录车辆型号、购置时间、维修记录等,租赁订单表记录租车时间、还车时间、客户信息,站点信息表记录各站点位置、可容纳车辆数等。利用 Excel 的函数和数据透视表功能,企业能实时统计各站点不同类型车辆的库存情况,根据订单趋势提前预测车辆需求。如通过多表交互分析发现某站点在旅游旺季对 SUV 车型的租赁需求大增,企业可提前从其他站点调配车辆,避免供不应求的情况,提高车辆利用率,降低运营成本。

二、深度客户洞察,提升服务质量

客户是车辆租赁企业的核心资产,自建 Excel 多表统计交互有助于深入了解客户行为和需求。将客户信息表、租赁历史表、客户反馈表等进行整合分析,企业可以统计客户的租赁频率、租赁时长、偏好车型等信息。例如,通过多表关联发现某些客户经常租赁高端车型且租赁时间较长,企业可针对性地为这些客户提供专属优惠、优先预订权等增值服务,增强客户忠诚度。同时,结合客户反馈表,分析不同车型的客户满意度,找出需要改进的服务环节,如车辆清洁程度、取还车流程便捷性等,从而优化服务质量,提升品牌形象。

三、精细财务分析,支持决策制定

财务数据是企业运营的晴雨表,在车辆租赁行业也不例外。自建 Excel 多表统计交互能够将租赁合同表、财务收支表、车辆成本表等相关数据进行综合分析。通过多表统计,企业可以准确计算每笔租赁业务的利润,分析不同车型、不同租赁时长的盈利能力。例如,对比不同车型的购置成本、维修成本与租赁收入,评估哪种车型为企业带来的利润更高。此外,还能通过分析历史数据预测未来的财务趋势,如在特定季节或活动期间的收入变化,为企业制定预算、投资决策提供有力支持。例如,根据多表分析结果,企业可决定是否购置新车型以满足市场需求,或调整租赁价格策略以提高整体收益。

四、风险预警与防控,保障企业稳定运营

车辆租赁行业面临着诸如车辆损坏、逾期未还、客户违约等多种风险。自建 Excel 多表统计交互可通过整合租赁订单表、车辆状态表、客户信用表等数据,实现风险预警功能。例如,通过设置数据条件格式和函数公式,当车辆租赁即将到期时自动提醒工作人员,降低逾期未还风险;通过分析客户历史租赁记录和信用数据,对信用不佳的客户进行风险评估,在接单时谨慎处理,避免潜在的违约风险。同时,结合车辆状态表,对车辆的维修频率、故障情况进行统计分析,提前发现车辆潜在的安全隐患,及时安排维修保养,保障车辆的安全运营,维护企业的声誉和利益。

自建 Excel 实现多表统计交互在车辆租赁行业中发挥着不可或缺的重要作用。它从资源管理、客户服务、财务决策到风险防控等多个维度,为企业提供了全面、精准的数据支持和分析能力,帮助企业在激烈的市场竞争中脱颖而出,实现可持续发展。随着行业的不断发展和数据量的持续增长,不断优化和完善自建 Excel 多表统计交互功能,将成为车辆租赁企业提升核心竞争力的关键举措。

代码

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>未来之窗EXCEL戴维斯跨表交互模拟</title><style>/* 基础样式 */* {box-sizing: border-box;margin: 0;padding: 0;font-family: Arial, sans-serif;}body {background-color: #f5f7fa;color: #1d2129;line-height: 1.5;min-height: 100vh;display: flex;flex-direction: column;}/* 布局组件 */.container {width: 100%;max-width: 1200px;margin: 0 auto;padding: 0 20px;}/* 头部样式 */header {background-color: white;box-shadow: 0 2px 4px rgba(0,0,0,0.1);padding: 15px 0;position: sticky;top: 0;z-index: 100;}.header-content {display: flex;justify-content: space-between;align-items: center;}.logo {font-size: 1.5rem;font-weight: bold;color: #165dff;}/* 主内容区 */main {flex: 1;padding: 30px 0;}/* 步骤指示器 */.steps {display: flex;justify-content: space-between;max-width: 800px;margin: 0 auto 40px;position: relative;}.steps::before {content: '';position: absolute;top: 20px;left: 50px;right: 50px;height: 4px;background-color: #e5e6eb;z-index: 1;}.steps::after {content: '';position: absolute;top: 20px;left: 50px;width: 33%;height: 4px;background-color: #165dff;z-index: 2;transition: width 0.5s ease;}.step {display: flex;flex-direction: column;align-items: center;position: relative;z-index: 3;}.step-icon {width: 40px;height: 40px;border-radius: 50%;background-color: #165dff;color: white;display: flex;align-items: center;justify-content: center;margin-bottom: 8px;font-weight: bold;}.step:nth-child(3) .step-icon {background-color: #e5e6eb;color: #86909c;}.step-text {font-size: 0.9rem;font-weight: 500;}/* 网格布局 */.grid-layout {display: grid;grid-template-columns: 1fr;gap: 20px;}@media (min-width: 992px) {.grid-layout {grid-template-columns: 1fr 2fr;}}/* 卡片组件 */.card {background-color: white;border-radius: 6px;box-shadow: 0 2px 8px rgba(0,0,0,0.08);padding: 20px;margin-bottom: 20px;}.card-title {font-size: 1.1rem;font-weight: 600;margin-bottom: 15px;color: #165dff;display: flex;align-items: center;}.card-title span {margin-right: 8px;}/* 表单元素 */.form-group {margin-bottom: 15px;}label {display: block;margin-bottom: 6px;font-size: 0.9rem;color: #4e5969;}input, select, textarea {width: 100%;padding: 8px 12px;border: 1px solid #dcdee2;border-radius: 4px;font-size: 0.9rem;transition: border-color 0.2s;}input:focus, select:focus, textarea:focus {outline: none;border-color: #165dff;box-shadow: 0 0 0 2px rgba(22, 93, 255, 0.1);}/* 按钮样式 */.btn {display: inline-flex;align-items: center;justify-content: center;padding: 8px 16px;background-color: #165dff;color: white;border: none;border-radius: 4px;font-size: 0.9rem;font-weight: 500;cursor: pointer;transition: background-color 0.2s;}.btn:hover {background-color: #0e47cc;}.btn-success {background-color: #52c41a;}.btn-success:hover {background-color: #43a616;}.btn-text {background: none;color: #165dff;padding: 4px 8px;}.btn-text:hover {background-color: rgba(22, 93, 255, 0.1);color: #0e47cc;}/* 表选择样式 */.table-option {display: flex;align-items: center;padding: 10px;border: 1px solid #dcdee2;border-radius: 4px;margin-bottom: 10px;cursor: pointer;transition: all 0.2s;}.table-option:hover {border-color: #165dff;background-color: rgba(22, 93, 255, 0.05);}.table-option input {width: auto;margin-right: 10px;}/* 字段配置样式 */.field-item {padding: 15px;border: 1px solid #dcdee2;border-radius: 4px;background-color: #fafafa;margin-bottom: 15px;}.field-row {display: flex;flex-wrap: wrap;gap: 10px;}.field-col {flex: 1;min-width: 120px;}.remove-field {background: none;border: none;color: #86909c;cursor: pointer;align-self: flex-end;padding: 4px;}.remove-field:hover {color: #ff4d4f;}.add-field-container {display: flex;justify-content: flex-end;margin-bottom: 20px;}/* SQL预览样式 */.sql-preview {position: relative;background-color: #fafafa;border-radius: 4px;padding: 15px;font-family: monospace;font-size: 0.9rem;line-height: 1.5;white-space: pre;overflow-x: auto;max-height: 300px;margin-bottom: 15px;}.copy-btn {position: absolute;top: 10px;right: 10px;background-color: #f0f2f5;border: none;border-radius: 4px;padding: 4px 8px;cursor: pointer;font-size: 0.8rem;}.copy-btn:hover {background-color: #e5e6eb;}/* 表格样式 */.result-table {width: 100%;border-collapse: collapse;margin-bottom: 20px;}.result-table th,.result-table td {padding: 12px 15px;text-align: left;border-bottom: 1px solid #e5e6eb;}.result-table th {background-color: #f5f7fa;font-weight: 600;color: #4e5969;font-size: 0.85rem;}.result-table tr:hover {background-color: #fafafa;}/* 分页样式 */.pagination {display: flex;justify-content: space-between;align-items: center;margin-top: 20px;font-size: 0.9rem;}.page-controls {display: flex;gap: 5px;}.page-btn {padding: 5px 10px;border: 1px solid #dcdee2;border-radius: 4px;background-color: white;cursor: pointer;}.page-btn:hover {border-color: #165dff;color: #165dff;}.page-btn.active {background-color: #165dff;color: white;border-color: #165dff;}.page-btn:disabled {opacity: 0.5;cursor: not-allowed;}/* 连接设置样式 */.join-settings {margin-top: 20px;padding-top: 20px;border-top: 1px solid #e5e6eb;}.toggle-container {display: flex;justify-content: space-between;align-items: center;margin-bottom: 15px;}.toggle-switch {position: relative;display: inline-block;width: 40px;height: 20px;}.toggle-switch input {opacity: 0;width: 0;height: 0;}.toggle-slider {position: absolute;cursor: pointer;top: 0;left: 0;right: 0;bottom: 0;background-color: #e5e6eb;transition: .2s;border-radius: 20px;}.toggle-slider:before {position: absolute;content: "";height: 16px;width: 16px;left: 2px;bottom: 2px;background-color: white;transition: .2s;border-radius: 50%;}input:checked + .toggle-slider {background-color: #165dff;}input:checked + .toggle-slider:before {transform: translateX(20px);}/* 按钮组 */.btn-group {display: flex;justify-content: flex-end;gap: 10px;margin-top: 20px;}/* 通知样式 */.notification {position: fixed;top: 20px;right: 20px;background-color: #1d2129;color: white;padding: 10px 15px;border-radius: 4px;box-shadow: 0 2px 8px rgba(0,0,0,0.2);transform: translateX(calc(100% + 20px));transition: transform 0.3s ease;z-index: 1000;display: flex;align-items: center;}.notification.show {transform: translateX(0);}.notification span {margin-left: 8px;}/* 页脚样式 */footer {background-color: white;border-top: 1px solid #e5e6eb;padding: 15px 0;margin-top: 40px;}.footer-content {text-align: center;font-size: 0.85rem;color: #86909c;}</style>
</head>
<body><!-- 顶部导航栏 --><header><div class="container header-content"><div class="logo">未来之窗EXCEL戴维斯跨表交互模拟</div><div><button class="btn-text">帮助</button><button class="btn-text">设置</button></div></div></header><!-- 主要内容区 --><main><div class="container"><!-- 步骤指示器 --><div class="steps"><div class="step"><div class="step-icon">1</div><div class="step-text">选择表</div></div><div class="step"><div class="step-icon">2</div><div class="step-text">配置字段</div></div><div class="step"><div class="step-icon">3</div><div class="step-text">查看结果</div></div></div><div class="grid-layout"><!-- 左侧面板:表和字段选择 --><div><!-- 表选择卡片 --><div class="card"><div class="card-title"><span>1</span>选择数据表</div><div><div class="table-option"><input type="radio" name="table" value="table1" checked><span>东方仙盟小无相</span></div><div class="table-option"><input type="radio" name="table" value="table2"><span>项目信息表</span></div><div class="table-option"><input type="radio" name="table" value="table3"><span>客户信息表</span></div></div><div style="margin-top: 20px; padding-top: 20px; border-top: 1px solid #e5e6eb;"><div class="form-group"><label>表筛选条件 (table_sn)</label><input type="text" id="mainTableSn" value="779802252fb750aa016d20fc803b59ef052edec990002"></div><button class="btn-text">+ 添加更多条件</button></div></div><!-- 字段配置卡片 --><div class="card"><div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 15px;"><div class="card-title"><span>2</span>字段配置</div><button id="addFieldBtn" class="btn">+ 添加字段</button></div><div id="fieldsContainer"><!-- 字段配置项1 --><div class="field-item"><div class="field-row"><div class="field-col"><label>字段</label><select class="field-select"><option value="param1">param1</option><option value="param2">param2</option><option value="param11">param11</option><option value="param12">param12</option><option value="param13">param13</option><option value="param16" selected>param16</option></select></div><div class="field-col"><label>显示名称</label><input type="text" value="工程名称" class="display-name"></div><div class="field-col"><label>处理方式</label><select class="process-type"><option value="show" selected>显示</option><option value="sum">汇总(SUM)</option><option value="count">统计(COUNT)</option></select></div><div><button type="button" class="remove-field">×</button></div></div></div><!-- 字段配置项2 --><div class="field-item"><div class="field-row"><div class="field-col"><label>字段</label><select class="field-select"><option value="param1">param1</option><option value="param2" selected>param2</option><option value="param11">param11</option><option value="param12">param12</option><option value="param13">param13</option><option value="param16">param16</option></select></div><div class="field-col"><label>显示名称</label><input type="text" value="结算单号" class="display-name"></div><div class="field-col"><label>处理方式</label><select class="process-type"><option value="show" selected>显示</option><option value="sum">汇总(SUM)</option><option value="count">统计(COUNT)</option></select></div><div><button type="button" class="remove-field">×</button></div></div></div><!-- 字段配置项3 --><div class="field-item"><div class="field-row"><div class="field-col"><label>字段</label><select class="field-select"><option value="param1">param1</option><option value="param2">param2</option><option value="param11" selected>param11</option><option value="param12">param12</option><option value="param13">param13</option><option value="param16">param16</option></select></div><div class="field-col"><label>显示名称</label><input type="text" value="结算金额" class="display-name"></div><div class="field-col"><label>处理方式</label><select class="process-type"><option value="show">显示</option><option value="sum" selected>汇总(SUM)</option><option value="count">统计(COUNT)</option></select></div><div><button type="button" class="remove-field">×</button></div></div></div></div><!-- 多表连接配置 --><div class="join-settings"><div class="toggle-container"><div class="card-title" style="margin-bottom: 0;">多表连接</div><label class="toggle-switch"><input type="checkbox" id="joinTables" checked><span class="toggle-slider"></span></label></div><div id="joinSettings"><div class="form-group"><label>关联表</label><select id="joinTableSelect"><option value="table1">东方仙盟小无相</option><option value="table2">项目信息表</option><option value="table3">客户信息表</option></select></div><div class="form-group"><label>关联表筛选条件 (table_sn)</label><input type="text" id="joinTableSn" value="77980225571289009447b68b5fb91dbdae9b200390002"></div><div class="form-group"><label>连接条件</label><div style="display: flex; gap: 10px;"><select id="mainTableField" style="flex: 1;"><option value="param16">主表: param16 (工程名称)</option><option value="param1">主表: param1</option><option value="param2">主表: param2</option></select><div style="display: flex; align-items: center;">=</div><select id="joinTableField" style="flex: 1;"><option value="param1">关联表: param1 (工程名称)</option><option value="param2">关联表: param2</option><option value="param16">关联表: param16</option></select></div></div><div class="form-group"><label>连接类型</label><select id="joinType"><option value="JOIN">INNER JOIN (仅匹配记录)</option><option value="LEFT JOIN">LEFT JOIN (保留主表所有记录)</option><option value="RIGHT JOIN">RIGHT JOIN (保留关联表所有记录)</option></select></div></div></div><div class="btn-group"><button id="generateSQLBtn" class="btn">生成SQL</button></div></div></div><!-- 右侧面板:SQL和结果 --><div><!-- SQL预览卡片 --><div class="card"><div class="card-title"><span>SQL</span>预览</div><div class="sql-preview"><button class="copy-btn" id="copySQLBtn">复制</button><div id="sqlPreview">SELECT a.工程名称,b.结算单号,a.结算金额,a.已付金额,a.未付金额
FROM (SELECT param16 AS '工程名称',SUM(CAST(param11 AS DECIMAL(10,2))) AS '结算金额',SUM(CAST(param12 AS DECIMAL(10,2))) AS '已付金额',SUM(CAST(param13 AS DECIMAL(10,2))) AS '未付金额'FROM 东方仙盟小无相 WHERE table_sn = '779802252fb750aa016d20fc803b59ef052edec990002' GROUP BY param16) AS a
JOIN (SELECT param1 AS '工程名称',param2 AS '结算单号'FROM 东方仙盟小无相 WHERE table_sn = '77980225571289009447b68b5fb91dbdae9b200390002') AS b
ON a.工程名称 = b.工程名称
ORDER BY a.工程名称;</div></div><div class="btn-group"><button id="executeSQLBtn" class="btn btn-success">执行查询</button></div></div><!-- 结果展示卡片 --><div class="card"><div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 15px;"><div class="card-title"><span>3</span>查询结果</div><div style="display: flex; gap: 10px;"><button class="btn-text">导出</button><button class="btn-text">刷新</button></div></div><div style="overflow-x: auto;"><table class="result-table"><thead><tr><th>工程名称</th><th>结算单号</th><th>结算金额</th><th>已付金额</th><th>未付金额</th></tr></thead><tbody><tr><td>办公楼项目</td><td>JS2023001</td><td>1,250,000.00</td><td>750,000.00</td><td>500,000.00</td></tr><tr><td>住宅项目A区</td><td>JS2023002</td><td>3,800,000.00</td><td>1,900,000.00</td><td>1,900,000.00</td></tr><tr><td>商业综合体</td><td>JS2023003</td><td>8,500,000.00</td><td>5,100,000.00</td><td>3,400,000.00</td></tr></tbody></table></div><div class="pagination"><div>显示 1 至 3,共 3 条记录</div><div class="page-controls"><button class="page-btn" disabled>←</button><button class="page-btn active">1</button><button class="page-btn">2</button><button class="page-btn">→</button></div></div></div></div></div></div></main><!-- 页脚 --><footer><div class="container footer-content"><p>© 2023 未来之窗EXCEL戴维斯跨表交互模拟</p></div></footer><!-- 通知提示框 --><div class="notification" id="notification"><span id="notificationText">操作成功</span></div><script>// 字段模板const fieldTemplate = `<div class="field-item"><div class="field-row"><div class="field-col"><label>字段</label><select class="field-select"><option value="param1">param1</option><option value="param2">param2</option><option value="param11">param11</option><option value="param12">param12</option><option value="param13">param13</option><option value="param16">param16</option></select></div><div class="field-col"><label>显示名称</label><input type="text" value="" placeholder="请输入显示名称" class="display-name"></div><div class="field-col"><label>处理方式</label><select class="process-type"><option value="show" selected>显示</option><option value="sum">汇总(SUM)</option><option value="count">统计(COUNT)</option></select></div><div><button type="button" class="remove-field">×</button></div></div></div>`;// 获取主表名称function getMainTableName() {const tableRadios = document.querySelectorAll('input[name="table"]');for (const radio of tableRadios) {if (radio.checked) {if (radio.value === 'table1') return '东方仙盟小无相';if (radio.value === 'table2') return '项目信息表';if (radio.value === 'table3') return '客户信息表';}}return '东方仙盟小无相';}// 获取关联表名称function getJoinTableName() {const joinTableSelect = document.getElementById('joinTableSelect');if (joinTableSelect.value === 'table1') return '东方仙盟小无相';if (joinTableSelect.value === 'table2') return '项目信息表';if (joinTableSelect.value === 'table3') return '客户信息表';return '东方仙盟小无相';}// 生成SQLfunction generateSQL() {// 获取主表信息const mainTableName = getMainTableName();const mainTableSn = document.getElementById('mainTableSn').value;// 获取关联表信息const useJoin = document.getElementById('joinTables').checked;let joinTableName = '';let joinTableSn = '';let joinType = '';let mainField = '';let joinField = '';if (useJoin) {joinTableName = getJoinTableName();joinTableSn = document.getElementById('joinTableSn').value;joinType = document.getElementById('joinType').value;mainField = document.getElementById('mainTableField').value;joinField = document.getElementById('joinTableField').value;// 提取字段名(去掉显示文本)mainField = mainField.split(':')[1].trim().split(' ')[0];joinField = joinField.split(':')[1].trim().split(' ')[0];}// 获取所有字段配置const fieldItems = document.querySelectorAll('.field-item');const mainTableFields = [];const joinTableFields = [];const selectFields = [];// 简单区分主表和关联表字段(实际应用中需要更复杂的逻辑)const mainTableFieldNames = ['param16', 'param11', 'param12', 'param13'];const joinTableFieldNames = ['param1', 'param2'];fieldItems.forEach((item, index) => {const fieldSelect = item.querySelector('.field-select');const displayName = item.querySelector('.display-name').value;const processType = item.querySelector('.process-type').value;const fieldName = fieldSelect.value;// 构建选择字段let selectField;if (processType === 'show') {selectField = `${fieldName} AS '${displayName}'`;} else if (processType === 'sum') {selectField = `SUM(CAST(${fieldName} AS DECIMAL(10,2))) AS '${displayName}'`;} else { // countselectField = `COUNT(${fieldName}) AS '${displayName}'`;}// 分配到对应的表if (mainTableFieldNames.includes(fieldName)) {mainTableFields.push(selectField);selectFields.push(`a.${displayName}`);} else if (joinTableFieldNames.includes(fieldName)) {joinTableFields.push(selectField);selectFields.push(`b.${displayName}`);} else {// 默认为主表字段mainTableFields.push(selectField);selectFields.push(`a.${displayName}`);}});// 构建主表子查询let mainSubquery = `(SELECT ${mainTableFields.join(',\n    ')}FROM ${mainTableName} WHERE table_sn = '${mainTableSn}'`;// 确定需要GROUP BY的字段const groupByFields = [];fieldItems.forEach(item => {const fieldName = item.querySelector('.field-select').value;const processType = item.querySelector('.process-type').value;if (processType === 'show' && mainTableFieldNames.includes(fieldName)) {groupByFields.push(fieldName);}});if (groupByFields.length > 0) {mainSubquery += `\n GROUP BY ${groupByFields.join(', ')}`;}mainSubquery += ') AS a';// 构建关联表子查询let joinSubquery = '';if (useJoin && joinTableFields.length > 0) {joinSubquery = `${joinType} (SELECT ${joinTableFields.join(',\n        ')}FROM ${joinTableName} WHERE table_sn = '${joinTableSn}') AS b
ON a.${mainField.split('.').pop()} = b.${joinField.split('.').pop()}`;}// 构建完整SQLlet sql = `SELECT ${selectFields.join(',\n    ')}
FROM ${mainSubquery}
${useJoin && joinTableFields.length > 0 ? joinSubquery : ''}
${groupByFields.length > 0 ? `\nORDER BY a.${groupByFields[0]}` : ''};`;// 格式化SQLsql = sql.replace(/    /g, '    ');return sql;}// 添加字段按钮事件document.getElementById('addFieldBtn').addEventListener('click', function() {const container = document.getElementById('fieldsContainer');const div = document.createElement('div');div.innerHTML = fieldTemplate;container.appendChild(div.firstElementChild);// 为新添加的字段绑定删除事件bindRemoveEvents();// 显示通知showNotification('字段已添加');});// 绑定删除字段事件function bindRemoveEvents() {document.querySelectorAll('.remove-field').forEach(button => {button.addEventListener('click', function() {const fieldItem = this.closest('.field-item');fieldItem.style.opacity = '0';fieldItem.style.transform = 'scale(0.95)';fieldItem.style.transition = 'all 0.2s ease';setTimeout(() => {fieldItem.remove();showNotification('字段已删除');}, 200);});});}// 生成SQL按钮事件document.getElementById('generateSQLBtn').addEventListener('click', function() {// 显示加载状态this.textContent = '生成中...';this.disabled = true;setTimeout(() => {// 生成SQLconst sql = generateSQL();document.getElementById('sqlPreview').textContent = sql;// 恢复按钮状态this.textContent = '生成SQL';this.disabled = false;// 显示通知showNotification('SQL已生成');// 更新步骤指示器document.querySelector('.steps::after').style.width = '100%';}, 800);});// 执行SQL按钮事件document.getElementById('executeSQLBtn').addEventListener('click', function() {// 显示加载状态this.textContent = '执行中...';this.disabled = true;setTimeout(() => {// 恢复按钮状态this.textContent = '执行查询';this.disabled = false;// 模拟执行完成,显示通知showNotification('查询已执行,共返回3条记录');// 更新步骤指示器,激活第三步document.querySelector('.step:nth-child(3) .step-icon').style.backgroundColor = '#165dff';document.querySelector('.step:nth-child(3) .step-icon').style.color = 'white';}, 1200);});// 复制SQL按钮事件document.getElementById('copySQLBtn').addEventListener('click', function() {const sqlText = document.getElementById('sqlPreview').textContent;const textarea = document.createElement('textarea');textarea.value = sqlText;document.body.appendChild(textarea);textarea.select();document.execCommand('copy');document.body.removeChild(textarea);showNotification('SQL已复制到剪贴板');});// 多表连接开关事件document.getElementById('joinTables').addEventListener('change', function() {const joinSettings = document.getElementById('joinSettings');if (this.checked) {joinSettings.style.maxHeight = '500px';joinSettings.style.opacity = '1';joinSettings.style.overflow = 'visible';} else {joinSettings.style.maxHeight = '0';joinSettings.style.opacity = '0';joinSettings.style.overflow = 'hidden';joinSettings.style.transition = 'max-height 0.3s ease, opacity 0.3s ease';}});// 表选择变更时更新SQLdocument.querySelectorAll('input[name="table"]').forEach(radio => {radio.addEventListener('change', function() {// 当表选择变更时,可以自动更新SQL或提示用户重新生成});});// 字段变更时更新SQLdocument.addEventListener('change', function(e) {if (e.target.classList.contains('field-select') || e.target.classList.contains('display-name') || e.target.classList.contains('process-type')) {// 字段配置变更,可以延迟生成SQL}});// 显示通知函数function showNotification(message) {const notification = document.getElementById('notification');const notificationText = document.getElementById('notificationText');notificationText.textContent = message;notification.classList.add('show');setTimeout(() => {notification.classList.remove('show');}, 3000);}// 初始化事件绑定document.addEventListener('DOMContentLoaded', function() {bindRemoveEvents();});</script>
</body>
</html>

阿雪技术观


在科技发展浪潮中,我们不妨积极投身技术共享。不满足于做受益者,更要主动担当贡献者。无论是分享代码、撰写技术博客,还是参与开源项目维护改进,每一个微小举动都可能蕴含推动技术进步的巨大能量。东方仙盟是汇聚力量的天地,我们携手在此探索硅基生命,为科技进步添砖加瓦。

Hey folks, in this wild tech - driven world, why not dive headfirst into the whole tech - sharing scene? Don't just be the one reaping all the benefits; step up and be a contributor too. Whether you're tossing out your code snippets, hammering out some tech blogs, or getting your hands dirty with maintaining and sprucing up open - source projects, every little thing you do might just end up being a massive force that pushes tech forward. And guess what? The Eastern FairyAlliance is this awesome place where we all come together. We're gonna team up and explore the whole silicon - based life thing, and in the process, we'll be fueling the growth of technology

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/95110.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/95110.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/95110.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

医疗AI时代的生物医学Go编程:高性能计算与精准医疗的案例分析(八)

5.4 性能测试与结果分析 为了评估GoEHRStream的性能,我们设计测试模拟真实的医院数据流场景,并测量关键指标。 5.4.1 实验环境 硬件: CPU: Intel Xeon E-2288G (8 cores, 16 threads) RAM: 32 GB DDR4 Storage: 512 GB NVMe SSD (用于GoEHRStream和BadgerDB) Network: 1 G…

开关电源设计“反馈回路”部分器件分析

目录 主要分析问题如下&#xff1a; 一、问题1 二、问题二 分析电路如下&#xff1a; 主要分析问题如下&#xff1a; 1、分析TL431芯片1、2两引脚间并联电阻和电容&#xff08;RC电路&#xff09;的作用&#xff1f; 2、PC817A光耦输入两个引脚间并联电阻的作用&#xff1f;…

AI 编程新玩法:用 yunqi-saas-kit 框架制作小游戏,看广告变现轻松赚钱​

AI 编程新玩法&#xff1a;用 yunqi-saas-kit 框架制作小游戏&#xff0c;看广告变现轻松赚钱 在数字经济快速发展的当下&#xff0c;AI 技术正不断渗透到各个领域&#xff0c;其中 **#AI 编程凭借高效、便捷的优势&#xff0c;成为不少开发者和创业者的新选择。尤其是在小游戏…

Kafka 架构原理

一个kafka集群中包含一个或多个Producer、一个或多个broker、一个或多个ConsumerGrop以及一个Zookeeper集群。kafka通过Zookeeper管理kafka集群配置、leader副本的选举、生产者的负载均衡等。Producer使用push模式将消息发布到broker,Consumer使用pull模式从broker订阅并消费消…

用 PyTorch 搭建 CNN 实现 MNIST 手写数字识别

在图像识别领域&#xff0c;卷积神经网络&#xff08;CNN&#xff09; 凭借其对空间特征的高效提取能力&#xff0c;成为手写数字识别、人脸识别等任务的首选模型。而 MNIST&#xff08;手写数字数据集&#xff09;作为入门级数据集&#xff0c;几乎是每个深度学习学习者的 “第…

CTFshow系列——命令执行web61-68

本篇文章介绍了不同了方法进行题目的解析以及原因讲解。 文章目录Web61尝试了一下&#xff0c;被过滤的payload如下&#xff1a;所以&#xff0c;根据上述思路&#xff0c;这里尝试过的payload为&#xff1a;Web62&#xff08;同Web61&#xff09;Web63&#xff08;同Web62&…

.Net程序员就业现状以及学习路线图(二)

一、.NET程序员就业现状分析 1. 市场需求与岗位分布 2025年.NET开发岗位全国招聘职位约1676个&#xff0c;占全国技术岗位的0.009%&#xff0c;主要集中在一线城市如深圳、上海等地。就业单位类型分布为&#xff1a;软件公司占43.3%&#xff0c;研发机构占33.1%&#xff0c;物联…

MTK Linux DRM分析(二十二)- MTK mtk_drm_crtc.c(Part1)

一、代码分析 mtk_drm_crtc.c以mtk_crtc_comp_is_busy函数为界限进行拆分分析 static const struct drm_crtc_funcs mtk_crtc_funcs = {.set_config = drm_atomic_helper_set_config,.page_flip = drm_atomic_helper_page_flip,.destroy = mtk_drm_crtc_destroy,.reset = mtk…

stm32f103c8t6 led闪灯实验

目录 闪灯原理 2种接线方式控制闪灯 使用推挽接法 使用开漏接法 看原理图 写代码 闪灯原理 LED灯有个2-10mA的电流就可以点亮 3.3/5100.006A6mA 2种接线方式控制闪灯 使用推挽接法 当设置推挽模式时&#xff0c;CPU控制寄存器写0&#xff0c;IO引脚输出低电压&#xff0…

“我同意”按钮别乱点——你的“职业EULA”漏洞扫描报告

尊敬的审核&#xff1a; 本人文章《“我同意”按钮别乱点——你的“职业EULA”漏洞扫描报告》 1. 纯属技术交流&#xff0c;无任何违法内容 2. 所有法律引用均来自公开条文 3. 请依据《网络安全法》第12条“不得无故删除合法内容”处理 附&#xff1a;本文结构已通过区块链存证…

Product Hunt 每日热榜 | 2025-09-01

1. A01 标语&#xff1a;你个人的新闻助手 介绍&#xff1a;A01 是你的新闻助手&#xff0c;可以帮你关注你关心的任何话题。只需告诉它你想了解什么&#xff0c;它就能为你带来最新的文章。 产品网站&#xff1a; 立即访问 Product Hunt&#xff1a; View on Product Hunt…

【OpenFeign】基础使用

【OpenFeign】基础使用1. Feign介绍1.1 使用示例1.2 Feign与RPC对比1.3 SpringCloud Alibaba快速整合OpenFeign1.3.1 详细代码1. Feign介绍 1.什么是 Feign Feign 是 Netflix 开发的一个 声明式的 HTTP 客户端&#xff0c;在 Spring Cloud 中被广泛使用。它的目标是&#xff…

访问相同的url,相同入参的请求,Apifox/Postman可以正常响应结果,而本地调用不行(或结果不同)

文章目录问题概述Apifox查看实际请求总结问题概述 开发中有一个需求需要去别的系统中拿数据&#xff0c;配置好相关参数后发起请求时发现响应结果和在Apifox上不同&#xff0c;Apifox上正常显示数据&#xff0c;而本地调用后返回数据不存在。 这就很奇怪了&#xff0c;想了很多…

数据结构(C语言篇):(七)双向链表

目录 前言 一、概念与结构 二、双向链表的实现 2.1 头文件的准备 2.2 函数的实现 2.2.1 LTPushBack( )函数&#xff08;尾插&#xff09; &#xff08;1&#xff09;LTBuyNode( ) &#xff08;2&#xff09;LTInit( ) &#xff08;3&#xff09;LTPrint( ) &#x…

从拿起简历(resume)重新找工作开始聊起

经济萧条或经济衰退在经济相关学术上似乎有着严格的定义&#xff0c;我不知道我们的经济是否已经走向了衰退或者萧条&#xff0c;但有一点那是肯定的&#xff0c;那就现在我们的经济肯定是不景气的。经济不景气会怎么样&#xff1f;是的&#xff0c;会有很多人失业&#xff0c;…

OS+MySQL+(其他)八股小记

鲁迅先生曾经说过&#xff0c;每天进步一点点&#xff0c;妈妈夸我小天才。 依旧今日八股&#xff0c;这是我在多个文档整合一起的&#xff0c;可能格式有些问题&#xff0c;请谅解。 操作系统 1.进程和线程的区别&#xff1f; 进程是代码在数据集合的一次执行活动&#xff0c;…

Transformer的并行计算与长序列处理瓶颈总结

&#x1f31f; 第0层&#xff1a;极简版&#xff08;30秒理解&#xff09;一句话核心&#xff1a;Transformer像圆桌会议——所有人都能同时交流&#xff08;并行优势&#xff09;&#xff0c;但人越多会议越混乱&#xff08;长序列瓶颈&#xff09;。核心问题 并行优势&#x…

Vue 3 useId 完全指南:生成唯一标识符的最佳实践

&#x1f4d6; 概述 useId() 是 Vue 3 中的一个组合式 API 函数&#xff0c;用于生成唯一的标识符。它确保在服务端渲染&#xff08;SSR&#xff09;和客户端渲染之间生成一致的 ID&#xff0c;避免水合不匹配的问题。 &#x1f3af; 基本概念 什么是 useId&#xff1f; useId…

CGroup 资源控制组 + Docker 网络模式

1 CGroup 资源控制组1.1 为什么需要 CGroup - 容器本质 宿主机上一组进程 - 若无资源边界&#xff0c;一个暴走容器即可拖垮整机 - CGroup 提供**内核级硬限制**&#xff0c;比 ulimit、nice 更可靠1.2 核心概念 3 件套 | 概念 | 一句话解释 | 查看方式 | | Hierarchy | 树…

【ArcGIS微课1000例】0150:如何根据地名获取经纬度坐标

本文介绍了三种获取地理坐标的方法:1)在ArcGIS Pro中通过搜索功能定位目标点(如月牙泉)并查看其WGS84坐标;2)使用ArcGIS内置工具获取坐标;3)推荐三个在线工具(maplocation、地球在线、yanue)支持批量查询和多地图源坐标转换。强调了使用WGS84坐标系以减少误差,并展示…