mt-search的使用及事件捕获(vue.js)

本文介绍了一个使用Vue.js实现的搜索组件案例,该组件具备自动完成建议和热门搜索功能。文章详细展示了如何通过Vue的自定义组件和事件监听来创建交互式的搜索框,并通过实时过滤显示匹配的搜索建议。
<template>


<div class="jmc-search">
<!-- 当点击确定按钮时,触发submit事件 -->
<div class="page-search" v-on:keyup.13="submit">
<mt-search autofocus v-model="value" :result="filterResult" @keyup.enter="testsearch()">
<!--<divclass="hotkey-wrapper" >
<p>热门搜索</p>
<ul class="hotkey-list">
<li class="speical">中国新歌声第二季</li>
<li>无条件 </li>
<li>双世宠妃 </li>
<li>从前慢 </li>
<li>王俊凯 </li>
<li>李宇春 </li>
</ul>
</div>-->
</mt-search>

<div class="hotkey-wrapper">
<p>热门搜索</p>
<ul class="hotkey-list">
<a class="speical">消毒液</a>
<a>大盘纸</a>
<a>玻璃刮</a>
<a>防滑地垫 </a>
<a>拖把</a>
<a>纸盒 </a>
<a>防滑地垫 </a>
<a>拖把</a>
</ul>
</div>

</div>


</div>


</template>


<script>
import Vue from 'vue';
import { Header } from 'mint-ui';
import { Search } from 'mint-ui';
import { Toast } from 'mint-ui';


Vue.component(Search.name, Search);
Vue.component(Header.name, Header);


export default {
name: 'page-search',
data() {
return {
value: '',
// 默认数据  
defaultResult: [
'Apple',
'Banana',
'Orange',
'Durian',
'Lemon',
'Peach',
'Cherry',
'Berry',
'Core',
'Fig',
'Haw',
'Melon',
'Plum',
'123',
'Peanut',
'Other'
]
}
},
created() {
//debug
//this.getSongs()
},
computed:{
//onchange
filterResult() {
return this.defaultResult.filter(value => new RegExp(this.value, 'i').test(value));
}
},
methods: {
//点击确定按钮时,弹出打印search的值
submit(){
Toast(this.value);
}
}


}
</script>


<style>
@import "../../assets/css/common.css";
.hotkey-wrapper {
padding: 15px;
}

.hotkey-wrapper p:first-child {
font-size: 14px;
color: rgba(0, 0, 0, 0.5);
margin-bottom: 10px;
}

.hotkey-wrapper .hotkey-list {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
}

.hotkey-wrapper .hotkey-list>a {
font-size: 14px;
margin-right: 5px;
margin-bottom: 10px;
text-align: center;
padding: 0 10px;
height: 30px;
line-height: 30px;
border-radius: 16px;
border: 1px solid #D7D7D7;
}

.hotkey-wrapper .hotkey-list>a.speical {
border-color: #24b6ff;
color: #24b6ff;
}
.mint-search{
height:auto;
}


</style>
<!-- *Author:jxx *Contact:283591387@qq.com *代码由框架生成,任何更改都可能导致被代码生成器覆盖 *业务请在@/extension/system/dynamic_general_ledger/dynamic_general_ledger.jsx此处编写 --> <template> <view-grid ref="grid" :columns="columns" :detail="detail" :editFormFields="editFormFields" :editFormOptions="editFormOptions" :searchFormFields="searchFormFields" :searchFormOptions="searchFormOptions" :table="table" :extend="extend"> </view-grid> <el-dialog v-model="isDialogVisible" title="文档权限信息" width="90%" :before-close="handleClose" style="max-width: 1400px" > <div class="dialog-content"> <!-- 文档基本信息 --> <!-- <el-descriptions title="文档基本信息" :column="2" border style="margin-bottom: 20px"> <el-descriptions-item label="文档编码">{{ currentDocument.code }}</el-descriptions-item> <el-descriptions-item label="文档名称">{{ currentDocument.name }}</el-descriptions-item> <el-descriptions-item label="文档所属工厂">{{ currentDocument.creatorFactory }}</el-descriptions-item> <el-descriptions-item label="文档安全等级">{{ currentDocument.level }}</el-descriptions-item> <el-descriptions-item label="文档状态">{{ currentDocument.state }}</el-descriptions-item> <el-descriptions-item label="文档类型">{{ currentDocument.type }}</el-descriptions-item> <el-descriptions-item label="项目编码">{{ currentDocument.projectCode }}</el-descriptions-item> <el-descriptions-item label="项目名称">{{ currentDocument.projectName }}</el-descriptions-item> <el-descriptions-item label="项目涉及工厂">{{ currentDocument.projectFactories }}</el-descriptions-item> <el-descriptions-item label="项目类型">{{ currentDocument.projectCgr }}</el-descriptions-item> </el-descriptions> <el-divider /> --> <h3>文档授权信息</h3> </div> <el-tabs v-model="activeAccessTab" class="demo-tabs" type="card"> <el-tab-pane label="用户" name="user"> <div class="user-controls" :style="{ marginBottom: '15px', marginLeft: '5px' }"> <div> <span><strong>搜索权限用户:</strong></span> <el-input v-model="searchUserInput" placeholder="请输入工号/姓名" style="width: 200px; margin-right: 10px" /> <el-button type="primary" @click="handleSearchAccessUser">搜索</el-button> </div> <div style="display: flex; justify-content: flex-end; margin-left: auto"> <!-- <el-button @click="clearUserFilters">重置筛选条件</el-button> --> <!-- <el-button type="primary" @click="addUser" style="margin-left: 10px"> 新增权限 </el-button> --> </div> </div> <el-table ref="accessUserTableRef" :data="userList" row-key="id" border height="500" stripe :header-cell-style="{ background: '#F8F8F9', color: '#333', textAlign: 'center' }" :cell-style="{ textAlign: 'center' }" default-expand-all :scrollbar-always-on="true" class="content-right-table" > <el-table-column label="操作" width="100"> <template #default="scope"> <el-button type="text" :style="{ color: scope.row.accessType === '特殊' ? '#409EFF' : '#909399' }" @click="deleteUser(scope.row)" >删除</el-button > <el-button type="text" :style="{ color: scope.row.accessType === '特殊' ? '#409EFF' : '#909399' }" @click="updateUser(scope.row)" >修改</el-button > </template> </el-table-column> <el-table-column label="查看权限" width="120"> <template #default="scope"> <el-checkbox :model-value="scope.row.checkAccess === 0" :style="{ color: scope.row.accessType === '特殊' ? '#409EFF' : '#909399' }" :disabled="true" /> </template> </el-table-column> <el-table-column prop="userName" label="工号" width="120" /> <el-table-column prop="userTrueName" label="姓名" width="120" /> <el-table-column prop="organization" label="事业部" width="150"> <template #default="scope">{{ scope.row.organization }}</template> </el-table-column> <el-table-column prop="department" label="工厂/部门" width="150"> <template #default="scope">{{ scope.row.department }}</template> </el-table-column> <el-table-column prop="position" label="职位" width="120"> <template #default="scope">{{ scope.row.position || '无' }}</template> </el-table-column> <el-table-column prop="projectRole" label="项目角色" width="120"> <template #default="scope">{{ scope.row.projectRole }}</template> </el-table-column> <el-table-column prop="systemRole" label="系统角色" width="120"> <template #default="scope">{{ scope.row.systemRole }}</template> </el-table-column> <el-table-column prop="accessType" label="权限类型" width="120"> <template #default="scope"> <el-tag :type="getTagType(scope.row.accessType)">{{ scope.row.accessType }}</el-tag> </template> </el-table-column> <el-table-column prop="modifyDate" label="授权日期" width="150"> <template #default="scope">{{ scope.row.modifyDate || '无' }}</template> </el-table-column> <el-table-column prop="modifierName" label="授权人工号" width="120"> <template #default="scope">{{ scope.row.modifierName || '无' }}</template> </el-table-column> <el-table-column prop="modifierTrueName" label="授权人姓名" width="120"> <template #default="scope">{{ scope.row.modifierTrueName || '无' }}</template> </el-table-column> </el-table> <el-pagination class="mt-3" style="display: flex; justify-content: flex-end; margin-top: 10px" background layout="total, sizes, prev, pager, next, jumper" :total="accessUsersTotal" :page-sizes="[10, 20, 30, 50]" :page-size="accessUsersPageSize" :current-page="accessUsersCurrentPage" @size-change="handleAccessUsersSizeChange" @current-change="handleAccessUsersCurrentChange" /> </el-tab-pane> <el-tab-pane label="角色" name="roles"> <div class="user-controls" :style="{ marginBottom: '15px', marginLeft: '5px' }"> <div> <span><strong>搜索权限角色:</strong></span> <el-input v-model="searchRoleInput" placeholder="请输入角色ID/名称" style="width: 200px; margin-right: 10px" /> <el-button type="primary" @click="handleSearchAccessRole">搜索</el-button> </div> <!-- <div style="display: flex; justify-content: flex-end; margin-left: auto"> <el-button type="primary" @click="addUser" style="margin-left: 10px"> 新增权限 </el-button> </div> --> </div> <el-table ref="accessRoleTableRef" :data="accessRolesList" row-key="id" border height="500" style="width: 100%" fit :header-cell-style="{ background: '#F8F8F9', color: '#333', textAlign: 'center' }" :cell-style="{ textAlign: 'center' }" default-expand-all :scrollbar-always-on="true" class="content-right-table" > <el-table-column label="操作"> <template #default="scope"> <el-button type="text" :style="{ color: '#409EFF' }" @click="deleteRole(scope.row)" >删除</el-button > <el-button type="text" :style="{ color: '#409EFF' }" @click="updateRole(scope.row)" >修改</el-button > </template> </el-table-column> <el-table-column label="查看权限"> <template #default="scope"> <el-checkbox :model-value="scope.row.check_access === 0" :disabled="true" /> </template> </el-table-column> <el-table-column prop="role_id" label="角色ID" /> <el-table-column prop="role_name" label="角色名称" /> <el-table-column prop="access_type" label="权限类型"> <template #default="scope"> <el-tag :type="getTagType(scope.row.access_type)">{{ scope.row.access_type }}</el-tag> </template> </el-table-column> <el-table-column prop="modify_date" label="授权日期"> <template #default="scope">{{ scope.row.modify_date || '无' }}</template> </el-table-column> <el-table-column prop="modifier_name" label="授权人工号"> <template #default="scope">{{ scope.row.modifier_name || '无' }}</template> </el-table-column> <el-table-column prop="modifier_truename" label="授权人姓名"> <template #default="scope">{{ scope.row.modifier_truename || '无' }}</template> </el-table-column> </el-table> <el-pagination class="mt-3" style="display: flex; justify-content: flex-end; margin-top: 10px" background layout="total, sizes, prev, pager, next, jumper" :total="accessRolesTotal" :page-sizes="[10, 20, 30, 50]" :page-size="accessRolesPageSize" :current-page="accessRolesCurrentPage" @size-change="handleAccessRolesSizeChange" @current-change="handleAccessRolesCurrentChange" /> </el-tab-pane> </el-tabs> </el-dialog> </template> <script> import extend from "@/extension/system/dynamic_general_ledger/dynamic_general_ledger.jsx"; import { ref, defineComponent,h } from "vue"; import axios from 'axios' import { ElDialog, ElRow, ElCol, ElButton, ElLink, ElMessage,ElIcon} from 'element-plus' import { useRouter } from 'vue-router' import Message from '@/views/index/Message.vue' import { View } from '@element-plus/icons-vue'; const isDialogVisible = ref(false) const dialogContent = ref('') const accessUsersCurrentPage = ref(1) const accessUsersPageSize = ref(10) const accessRolesCurrentPage = ref(1) const accessRolesPageSize = ref(10) const activeAccessTab = ref('user') const userList = ref([]) const accessUsersTotal = ref(0) const searchUserInput = ref('') const accessRolesList = ref([]) const searchRoleInput = ref('') const accessRolesTotal = ref(0) var document = { id: '', dr: '', code: '', name: '', area: '', typeCode: '', type: '', level: '', state: '', projectName: '', projectCgr: '', projectCode: '', projectFactories: '', creatorId: '', creatorName: '', creatorFactoryId: '', creatorFactory: '' } const { proxy } = getCurrentInstance() const openDialog = (params.row) => { debugger userList.value = [] accessRolesList.value = [] searchUserInput.value = '' searchRoleInput.value = '' activeAccessTab.value = 'user' isDialogVisible.value = true //重置分页 accessUsersCurrentPage.value = 1 accessUsersPageSize.value = 10 accessRolesCurrentPage.value = 1 accessRolesPageSize.value = 10 userListUpdate(document, '') roleListUpdate(document, '') } // 搜索按钮点击事件 const handleSearchAccessUser = () => { accessUsersCurrentPage.value = 1 userListUpdate(document, searchUserInput.value) } const handleAccessUsersCurrentChange = (page) => { userList.value = [] accessUsersCurrentPage.value = page userListUpdate(document, searchUserInput.value) } const handleAccessUsersSizeChange = (size) => { accessUsersPageSize.value = size accessUsersCurrentPage.value = 1 userListUpdate(document, searchUserInput.value) } const getDocument = async (params) => { console.log(params) debugger try { const document1 = { code: params.row.file_code } const response1 = await axios.post('/api/Sys_File_Info/getDocumentrefer', document1) console.log('===response1.data.value==:', response1.data) console.log('===response1.data.value==:', response1.data.id) document.id = response1.data.id document.dr = response1.data.dr document.code = response1.data.code document.name = response1.data.name document.area = response1.data.area document.type = response1.data.type document.level = response1.data.level document.state = response1.data.state document.projectName = response1.data.projectName document.projectCgr = response1.data.projectCgr document.projectCode = response1.data.projectCode document.projectFactories = response1.data.projectFactories document.creatorId = response1.data.creatorId document.creatorName = response1.data.creatorName document.creatorFactoryId = response1.data.creatorFactoryId document.creatorFactory = response1.data.creatorFactory console.log('========document:======', document) } catch (error) { // proxy.$message.error(`获取文件信息失败:${error.message}`) } } const userListUpdate = async (document, searchQuery) => { try { const params = { page: accessUsersCurrentPage.value, pageSize: accessUsersPageSize.value, file: document, searchQuery: searchQuery || '' // 传递搜索词 } const response = await axios.post('/api/Access_File/getAccessUsersByFileWithPaging', params) userList.value = response.data.items.map((user) => ({ ...user, projectRole: user.projectRole ? user.projectRole : '无' })) accessUsersTotal.value = response.data.total console.log('userList.value:', userList.value) } catch (error) { proxy.$message.error(`获取权限用户失败:${error.message}`) } } const roleListUpdate = async (document, searchQuery) => { try { // const response1 = await axios.post('/api/Sys_File_Info/getDocument', { // file: document // }) const params = { page: accessRolesCurrentPage.value, pageSize: accessRolesPageSize.value, file: document, searchQuery: searchQuery || '' // 传递搜索词 } const response = await axios.post( '/api/Access_File_Role/getAccessRolesByFileWithPaging', params ) accessRolesList.value = response.data.items.map((role) => ({ ...role, access_type: '角色' })) accessRolesTotal.value = response.data.total } catch (error) { proxy.$message.error(`获取角色权限失败:${error.message}`) console.log(`获取角色权限失败:${error.message}`) } } export default defineComponent({ setup() { const table = ref({ key: 'id', footer: "Foots", cnName: '动态一本账', name: 'dynamic_general_ledger/dynamic_general_ledger', url: "/dynamic_general_ledger/", sortName: "id" }); const editFormFields = ref({}); const editFormOptions = ref([]); const searchFormFields = ref({}); const searchFormOptions = ref([]); const columns = ref([{field:'id',title:'序号',type:'long',width:120,require:true,align:'left',sort:true}, {field:'file_id',title:'文档ID',type:'string',width:110,align:'left'}, {field:'file_type',title:'文档类型',type:'string',width:110,align:'left'}, {field:'business_scenario',title:'所属业务场景',type:'string',width:110,align:'left'}, {field:'belong_stage',title:'所属阶段',type:'string',width:110,align:'left'}, {field:'model_project',title:'所属车型项目',type:'string',width:110,align:'left'}, {field:'project_type',title:'项目类型',type:'string',width:110,align:'left'}, {field:'product_model_number',title:'所属产品型号',type:'string',width:110,align:'left'}, {field:'file_security_level',title:'文档安全等级',type:'string',width:110,align:'left'}, {field:'file_code',title:'文件编号',type:'string',width:110,align:'left'}, {field:'file_version',title:'文件版本',type:'string',width:110,align:'left'}, {field:'file_state',title:'文件状态',type:'string',width:110,align:'left'}, {field:'development_tool',title:'编制工具',type:'string',width:110,align:'left'}, {field:'tool_code',title:'编制工具代码',type:'string',width:110,align:'left'}, {field:'method',title:'编制方式',type:'string',width:110,align:'left'}, {field:'collaboration_information',title:'协作信息',type:'string',width:110,align:'left'}, {field:'review_tool_platform',title:'评审工具/平台',type:'string',width:110,align:'left'}, {field:'review_method',title:'评审方式',type:'string',width:110,align:'left'}, {field:'review_scope',title:'评审范围',type:'string',width:110,align:'left'}, //评审角色需做对比 {field:'review_role',title:'评审角色',type:'string',width:110,align:'left'}, /*{ field: 'review_role', title: '评审角色', type: 'string', width: 110, align: 'left', render: async (value, params) => { console.log(value) debugger // 构造请求参数 const param = { FileType: params.row.file_type, }; try { const response = await axios.post('/api/Review_Info/IsRole', param, { headers: { 'Content-Type': 'application/json' } }); const backendRoles = response.data.review_role.split(',').map(r => r.trim()).sort(); const frontendRoles = value.split(',').map(r => r.trim()).sort(); // 判断是否完全一致 if (JSON.stringify(frontendRoles) === JSON.stringify(backendRoles)) { return value; // 一致,直接返回原值 } // 不一致,高亮多余部分 const backendSet = new Set(backendRoles); const highlightRoles = frontendRoles.map(role => { return backendSet.has(role) ? role : `<span style="color: red;">${role}</span>`; }); return highlightRoles.join(', '); } catch (error) { console.error('接口调用失败', error); return value; // 出错返回原始值 } } },*/ {field:'transfer_tool',title:'传输工具',type:'string',width:110,align:'left'}, {field:'transfer_method',title:'传输方式',type:'string',width:110,align:'left'}, {field:'transfer_scope',title:'传输范围',type:'string',width:110,align:'left'}, {field:'transfer_format',title:'传输格式',type:'string',width:110,align:'left'}, {field:'publishing_platform',title:'发布平台',type:'string',width:110,align:'left'}, {field:'sharing_platform',title:'共享平台',type:'string',width:110,align:'left'}, {field:'sharing_method',title:'共享方式',type:'string',width:110,align:'left'}, {field:'sharing_scope',title:'共享范围',type:'string',width:110,align:'left'}, { title: '操作', width: 100, align: 'center', fixed: 'right', // 固定在表格最右侧 render: (h, params) => { return [ h('i', { class: 'el-icon-view preview-icon', // 使用 Element Plus 图标 style: 'cursor: pointer; margin-right: 10px;', // 添加样式 onClick: () => openDialog(params.row || '') // 点击事件处理函数 }), ] } }, {field:'integration_platform',title:'集成平台',type:'string',width:110,align:'left'}, {field:'storage_platform',title:'存储平台',type:'string',width:110,align:'left'}, {field:'retention_period',title:'保管期限',type:'string',width:110,align:'left'}, {field:'storage_strategy',title:'存储策略',type:'string',width:110,align:'left'}, {field:'backup_requirements',title:'备份要求',type:'string',width:110,align:'left'}]); const detail = ref({ cnName: "#detailCnName", table: "#detailTable", columns: [], sortName: "", key: "" }); return { table, extend, editFormFields, editFormOptions, searchFormFields, searchFormOptions, columns, detail, }; }, }); </script> 我现在想点击这里后{ title: '操作', width: 100, align: 'center', fixed: 'right', // 固定在表格最右侧 render: (h, params) => { return [ h('i', { class: 'el-icon-view preview-icon', // 使用 Element Plus 图标 style: 'cursor: pointer; margin-right: 10px;', // 添加样式 onClick: () => openDialog(params.row || '') // 点击事件处理函数 }), ] } },弹出弹窗,调用getDocument方法获得document数据,然后接着调用这两个方法 const userListUpdate = async (document, searchQuery) => { try { const params = { page: accessUsersCurrentPage.value, pageSize: accessUsersPageSize.value, file: document, searchQuery: searchQuery || '' // 传递搜索词 } const response = await axios.post('/api/Access_File/getAccessUsersByFileWithPaging', params) userList.value = response.data.items.map((user) => ({ ...user, projectRole: user.projectRole ? user.projectRole : '无' })) accessUsersTotal.value = response.data.total console.log('userList.value:', userList.value) } catch (error) { proxy.$message.error(`获取权限用户失败:${error.message}`) } } const roleListUpdate = async (document, searchQuery) => { try { // const response1 = await axios.post('/api/Sys_File_Info/getDocument', { // file: document // }) const params = { page: accessRolesCurrentPage.value, pageSize: accessRolesPageSize.value, file: document, searchQuery: searchQuery || '' // 传递搜索词 } const response = await axios.post( '/api/Access_File_Role/getAccessRolesByFileWithPaging', params ) accessRolesList.value = response.data.items.map((role) => ({ ...role, access_type: '角色' })) accessRolesTotal.value = response.data.total } catch (error) { proxy.$message.error(`获取角色权限失败:${error.message}`) console.log(`获取角色权限失败:${error.message}`) } }获得弹窗中需要的数据,然后弹窗中的信息根据这些方法返回的数据赋值,我现在代码有啥问题吗,因为有一部分是我直接复制粘贴的
09-18
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <meta name="renderer" content="webkit|ie-comp|ie-stand"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/> <meta http-equiv="Cache-Control" content="no-siteapp"/> <!--[if lt IE 9]> <script type="text/javascript" src="../lib/html5shiv.js"></script> <script type="text/javascript" src="../lib/respond.min.js"></script> <![endif]--> <link rel="stylesheet" type="text/css" href="../static/h-ui/css/H-ui.min.css"/> <link rel="stylesheet" type="text/css" href="../static/h-ui.admin/css/H-ui.admin.css"/> <link rel="stylesheet" type="text/css" href="../lib/Hui-iconfont/1.0.8/iconfont.css"/> <link rel="stylesheet" type="text/css" href="../static/h-ui.admin/skin/default/skin.css" id="skin"/> <link rel="stylesheet" type="text/css" href="../static/h-ui.admin/css/style.css"/> <!--[if IE 6]> <script type="text/javascript" src="../lib/DD_belatedPNG_0.0.8a-min.js"></script> <script>DD_belatedPNG.fix('*');</script> <![endif]--> <title>销售明细查询(长春)</title> <style type="text/css"> /**tabs**/ /*.tabPanel ul{height:30px;border-bottom:1px solid #aaa;}*/ /*.tabPanel ul li{*/ /* float:left;margin:0 2px 0 0;border:1px solid #aaa;font-size:11px;height:29px;line-height:30px;width:111px;text-align:center;cursor:pointer;*/ /* text-shadow:0 1px 0 #fff;*/ /* border-radius:4px 4px 0 0;*/ /* box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.5);*/ /* background:#ddd;*/ /* background:-moz-linear-gradient(top, #eee, #ddd);*/ /* background:-webkit-gradient(linear, left top, left bottom, from(#eee), to(#ddd));*/ /*}*/ /*.tabPanel .hit{*/ /* border-bottom:1px solid #fff;cursor:pointer;color:black;text-shadow:0 1px 0 #fff;*/ /* background:#fff;*/ /* background:-webkit-gradient(linear, left top, left bottom, from(#e1e1e1), to(#fff));*/ /* background:-moz-linear-gradient(top, #e1e1e1, #fff);*/ /*}*/ /*.pane{border:1px solid #aaa;border-top:0;min-height:100px;background-color:#fff;display:none;}*/ /*.pane p{padding:15px 15px 0 10px;}*/ /*.pane h4{padding:15px 15px 0 10px;font-size:14px;font-weight:bold;}*/ td { text-align: center; } .overLoading { display: none; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: #f5f5f5; opacity: 0.5; z-index: 1000; } .layoutLoading { display: none; position: absolute; top: 40%; left: 40%; width: 20%; height: 20%; z-index: 1001; text-align: center; } </style> </head> <body> <!-- 新增加载提示元素(解决JS报错) --> <div class="overLoading" id="over"></div> <div class="layoutLoading" id="layout">加载中...</div> <nav class="breadcrumb"> <i class="Hui-iconfont"></i> 首页 <span class="c-gray en">></span>销售明细查询 <span class="c-gray en">></span>销售明细查询(长春) <a class="btn btn-success radius r" style="line-height:1.6em;margin-top:3px" href="javascript:location.replace(location.href);" title="刷新"><i class="Hui-iconfont"></i></a> </nav> <div class="page-container"> <div class="mt-20"> <div class="page-container" style="margin-top: 0px;padding-top: 0px;"> <div class="row cl"> <table style="margin-left: 50px;margin-top:0px;border-collapse:separate; border-spacing:0px 5px; width: calc(100% - 100px);"> <tr> <td colspan="2">下单日期: <input type="text" id="date1" onfocus="WdatePicker({ dateFmt:'yyyy-MM-dd',})" class="Wdate"/> - <input type="text" id="date2" onfocus="WdatePicker({ minDate:'#F{$dp.$D(\'date1\')}',maxDate:'2029-12-31', })" class="Wdate"/> </td> <td colspan="1"> <input id="date11" name="selectDate" type="radio" value="本年" onclick="selectDate1()"/>本年 <input id="date22" name="selectDate" checked type="radio" value="近3年" onclick="selectDate2()"/>近3年 <input id="date33" name="selectDate" type="radio" value="近10年" onclick="selectDate3()"/>近10年 </td> <td colspan="3" style="text-align: left;"> <button class="btn btn-secondary-outline radius" id="search" style="float: left" onclick="submit_order()"> <i class="Hui-iconfont"></i>检索 </button> </td> </tr> <tr> <!-- 发货客户编号 --> <td style="alignment: left">发货客户编号: <select id="fhkhbh"> <option value="0">所有</option> <option value="60009">60009</option> <option value="2000000108">2000000108</option> <option value="1000200000">1000200000</option> </select> </td> <!-- 领料单位 --> <td style="alignment: left">领料单位: <select id="lldw"> <option value="0">所有</option> <option value="中国铁路北京局集团有限公司">中国铁路北京局集团有限公司</option> <option value="北京动车段">北京动车段</option> <option value="北京北所">北京北所</option> <option value="北京南动车所">北京南动车所</option> <option value="朝阳所">朝阳所</option> <option value="石家庄动车所">石家庄动车所</option> <option value="雄安所">雄安所</option> <option value="北京东动车所">北京东动车所</option> <option value="中车长春轨道客车股份有限公司">中车长春轨道客车股份有限公司</option> <option value="北京西所">北京西所</option> </select> </td> <!-- 物料来源 --> <td style="alignment: left">物料来源: <select id="wlly"> <option value="0">所有</option> <option value="供应商寄售">供应商寄售</option> <option value="配件公司直采">配件公司直采</option> <option value="配件公司库存">配件公司库存</option> <option value="销售退货">销售退货</option> </select> </td> <!-- 库存地点 --> <td style="alignment: left">库存地点: <select id="kcdd"> <option value="0">所有</option> <option value="配件中心-北京动车段">配件中心-北京动车段</option> <option value="配件中心-北京北所">配件中心-北京北所</option> <option value="配件中心-北京中心库销货库">配件中心-北京中心库销货库</option> <option value="配件中心-北京动车段中心库">配件中心-北京动车段中心库</option> </select> </td> <!-- 开票状态 --> <td style="alignment: left">开票状态: <select id="kpzt"> <option value="0">所有</option> <option value="YES">YES</option> <option value="NO">NO</option> </select> </td> <td style="alignment: left"> <button class="btn btn-secondary-outline radius" id="huizong" onclick="downloadExl1()"> <i class="Hui-iconfont"></i>导出 </button> </td> </tr> <tr> <!-- 车型 --> <td style="alignment: left">车型: <select id="cx"> <option value="0">所有</option> <option value="CR400BF">CR400BF</option> <option value="CRH380B">CRH380B</option> <option value="CRH5A">CRH5A</option> <option value="CRH380CL">CRH380CL</option> <option value="CRH3A">CRH3A</option> <option value="CR400BF-G">CR400BF-G</option> <option value="CRH5G">CRH5G</option> <option value="CRH380BL">CRH380BL</option> <option value="CR400BF-C">CR400BF-C</option> <option value="CRH3">CRH3</option> <option value="CR400BF-A">CR400BF-A</option> <option value="CRH380BG">CRH380BG</option> <option value="CRH400BF">CRH400BF</option> <option value="CRH380B/BL">CRH380B/BL</option> <option value="CRH380BK">CRH380BK</option> <option value="CRH5">CRH5</option> <option value="CR400BF-Z">CR400BF-Z</option> <option value="CR400BF-GZ">CR400BF-GZ</option> </select> </td> <!-- 修程 --> <td style="alignment: left">修程: <select id="xc"> <option value="0">所有</option> <option value="CR03">CR03</option> <option value="A42">A42</option> <option value="L3">L3</option> <option value="A21">A21</option> <option value="CR00">CR00</option> <option value="CR01">CR01</option> <option value="CR02">CR02</option> <option value="A31">A31</option> <option value="A32">A32</option> <option value="A11">A11</option> <option value="CR04">CR04</option> </select> </td> <td colspan="4"></td> </tr> <!-- 复选框区域 --> <tr> <td style="alignment: left"> <label class="checkbox-item"> <input type="checkbox" name="option" value="option1"> <span class="checkbox-icon"></span> <span class="checkbox-label">出库单号</span> </label> </td> <td style="alignment: left"> <label class="checkbox-item"> <input type="checkbox" name="option" value="option2" checked> <span class="checkbox-icon"></span> <span class="checkbox-label">出库单序号</span> </label> </td> <td style="alignment: left"> <label class="checkbox-item"> <input type="checkbox" name="option" value="option3"> <span class="checkbox-icon"></span> <span class="checkbox-label">出库单状态</span> </label> </td> <td style="alignment: left"> <label class="checkbox-item"> <input type="checkbox" name="option" value="option4"> <span class="checkbox-icon"></span> <span class="checkbox-label">创建时间</span> </label> </td> <td style="alignment: left"> <label class="checkbox-item"> <input type="checkbox" name="option" value="option5"> <span class="checkbox-icon"></span> <span class="checkbox-label">创建人</span> </label> </td> <td style="alignment: left"> <label class="checkbox-item"> <input type="checkbox" name="option" value="option6" checked> <span class="checkbox-icon"></span> <span class="checkbox-label">销售办公室</span> </label> </td> </tr> <tr> <td style="alignment: left"> <label class="checkbox-item"> <input type="checkbox" name="option" value="option7"> <span class="checkbox-icon"></span> <span class="checkbox-label">发货客户编号</span> </label> </td> <td style="alignment: left"> <label class="checkbox-item"> <input type="checkbox" name="option" value="option8"> <span class="checkbox-icon"></span> <span class="checkbox-label">客户名称</span> </label> </td> <td style="alignment: left"> <label class="checkbox-item"> <input type="checkbox" name="option" value="option9"> <span class="checkbox-icon"></span> <span class="checkbox-label">领料单位</span> </label> </td> <td style="alignment: left"> <label class="checkbox-item"> <input type="checkbox" name="option" value="option10"> <span class="checkbox-icon"></span> <span class="checkbox-label">领料人</span> </label> </td> <td style="alignment: left"> <label class="checkbox-item"> <input type="checkbox" name="option" value="option11"> <span class="checkbox-icon"></span> <span class="checkbox-label">过账日期</span> </label> </td> <td style="alignment: left"> <label class="checkbox-item"> <input type="checkbox" name="option" value="option12"> <span class="checkbox-icon"></span> <span class="checkbox-label">计划编号</span> </label> </td> </tr> <tr> <td style="alignment: left"> <label class="checkbox-item"> <input type="checkbox" name="option" value="option13" checked> <span class="checkbox-icon"></span> <span class="checkbox-label">计划行号</span> </label> </td> <td style="alignment: left"> <label class="checkbox-item"> <input type="checkbox" name="option" value="option14" checked> <span class="checkbox-icon"></span> <span class="checkbox-label">路局计划号</span> </label> </td> <td style="alignment: left"> <label class="checkbox-item"> <input type="checkbox" name="option" value="option15" checked> <span class="checkbox-icon"></span> <span class="checkbox-label">路局采购单号</span> </label> </td> <td style="alignment: left"> <label class="checkbox-item"> <input type="checkbox" name="option" value="option16" checked> <span class="checkbox-icon"></span> <span class="checkbox-label">SAP物料</span> </label> </td> <td style="alignment: left"> <label class="checkbox-item"> <input type="checkbox" name="option" value="option17"> <span class="checkbox-icon"></span> <span class="checkbox-label">物料描述</span> </label> </td> <td style="alignment: left"> <label class="checkbox-item"> <input type="checkbox" name="option" value="option18" checked> <span class="checkbox-icon"></span> <span class="checkbox-label">基本计量单位</span> </label> </td> </tr> <tr> <td style="alignment: left"> <label class="checkbox-item"> <input type="checkbox" name="option" value="option19" checked> <span class="checkbox-icon"></span> <span class="checkbox-label">物资编码</span> </label> </td> <td style="alignment: left"> <label class="checkbox-item"> <input type="checkbox" name="option" value="option20"> <span class="checkbox-icon"></span> <span class="checkbox-label">数量</span> </label> </td> <td style="alignment: left"> <label class="checkbox-item"> <input type="checkbox" name="option" value="option21"> <span class="checkbox-icon"></span> <span class="checkbox-label">不含税单价</span> </label> </td> <td style="alignment: left"> <label class="checkbox-item"> <input type="checkbox" name="option" value="option22"> <span class="checkbox-icon"></span> <span class="checkbox-label">税率</span> </label> </td> <td style="alignment: left"> <label class="checkbox-item"> <input type="checkbox" name="option" value="option23"> <span class="checkbox-icon"></span> <span class="checkbox-label">含税金额合计</span> </label> </td> <td style="alignment: left"> <label class="checkbox-item"> <input type="checkbox" name="option" value="option24" checked> <span class="checkbox-icon"></span> <span class="checkbox-label">价格来源</span> </label> </td> </tr> <tr> <td style="alignment: left"> <label class="checkbox-item"> <input type="checkbox" name="option" value="option25" checked> <span class="checkbox-icon"></span> <span class="checkbox-label">退货数量</span> </label> </td> <td style="alignment: left"> <label class="checkbox-item"> <input type="checkbox" name="option" value="option26" checked> <span class="checkbox-icon"></span> <span class="checkbox-label">应开票数量</span> </label> </td> <td style="alignment: left"> <label class="checkbox-item"> <input type="checkbox" name="option" value="option27" checked> <span class="checkbox-icon"></span> <span class="checkbox-label">应开票金额</span> </label> </td> <td style="alignment: left"> <label class="checkbox-item"> <input type="checkbox" name="option" value="option28" checked> <span class="checkbox-icon"></span> <span class="checkbox-label">已开票数量</span> </label> </td> <td style="alignment: left"> <label class="checkbox-item"> <input type="checkbox" name="option" value="option29" checked> <span class="checkbox-icon"></span> <span class="checkbox-label">已开票税前金额</span> </label> </td> <td style="alignment: left"> <label class="checkbox-item"> <input type="checkbox" name="option" value="option30" checked> <span class="checkbox-icon"></span> <span class="checkbox-label">已开票税后金额</span> </label> </td> </tr> <tr> <td style="alignment: left"> <label class="checkbox-item"> <input type="checkbox" name="option" value="option31" checked> <span class="checkbox-icon"></span> <span class="checkbox-label">未开票数量</span> </label> </td> <td style="alignment: left"> <label class="checkbox-item"> <input type="checkbox" name="option" value="option32" checked> <span class="checkbox-icon"></span> <span class="checkbox-label">未开票税前金额</span> </label> </td> <td style="alignment: left"> <label class="checkbox-item"> <input type="checkbox" name="option" value="option33" checked> <span class="checkbox-icon"></span> <span class="checkbox-label">未开票税后金额</span> </label> </td> <td style="alignment: left"> <label class="checkbox-item"> <input type="checkbox" name="option" value="option34" checked> <span class="checkbox-icon"></span> <span class="checkbox-label">批次</span> </label> </td> <td style="alignment: left"> <label class="checkbox-item"> <input type="checkbox" name="option" value="option35"> <span class="checkbox-icon"></span> <span class="checkbox-label">物料来源</span> </label> </td> <td style="alignment: left"> <label class="checkbox-item"> <input type="checkbox" name="option" value="option36"> <span class="checkbox-icon"></span> <span class="checkbox-label">库存地点</span> </label> </td> </tr> <tr> <td style="alignment: left"> <label class="checkbox-item"> <input type="checkbox" name="option" value="option37"> <span class="checkbox-icon"></span> <span class="checkbox-label">开票状态</span> </label> </td> <td style="alignment: left"> <label class="checkbox-item"> <input type="checkbox" name="option" value="option38"> <span class="checkbox-icon"></span> <span class="checkbox-label">车型</span> </label> </td> <td style="alignment: left"> <label class="checkbox-item"> <input type="checkbox" name="option" value="option39" checked> <span class="checkbox-icon"></span> <span class="checkbox-label">单价</span> </label> </td> <td style="alignment: left"> <label class="checkbox-item"> <input type="checkbox" name="option" value="option40" checked> <span class="checkbox-icon"></span> <span class="checkbox-label">车组号</span> </label> </td> <td style="alignment: left"> <label class="checkbox-item"> <input type="checkbox" name="option" value="option41"> <span class="checkbox-icon"></span> <span class="checkbox-label">修程</span> </label> </td> <td style="alignment: left"> <label class="checkbox-item"> <input type="checkbox" name="option" value="option42" checked> <span class="checkbox-icon"></span> <span class="checkbox-label">货主</span> </label> </td> </tr> <tr> <td style="alignment: left" colspan="2"> <label class="checkbox-item"> <input type="checkbox" name="option" value="option43" checked> <span class="checkbox-icon"></span> <span class="checkbox-label">总价</span> </label> </td> <td colspan="4"></td> </tr> </table> </div> <div class="row cl" style="margin-top: 20px;"></div> <div id="testTable" style="margin: auto;"> <table class="table table-border table-bordered table-hover table-bg table-sort" id="testCheck" style="margin-top: 30px; width: auto; table-layout: auto; word-wrap: break-word; word-break: break-all;"> <thead id="title"> <tr class="text-c"> <th data-column="option1" style="text-align: center;">出库单号</th> <th data-column="option2" style="text-align: center;">出库单序号</th> <th data-column="option3" style="text-align: center;">出库单状态</th> <th data-column="option4" style="text-align: center;">创建时间</th> <th data-column="option5" style="text-align: center;">创建人</th> <th data-column="option6" style="text-align: center;">销售办公室</th> <th data-column="option7" style="text-align: center;">发货客户编号</th> <th data-column="option8" style="text-align: center;">客户名称</th> <th data-column="option9" style="text-align: center;">领料单位</th> <th data-column="option10" style="text-align: center;">领料人</th> <th data-column="option11" style="text-align: center;">过账日期</th> <th data-column="option12" style="text-align: center;">计划编号</th> <th data-column="option13" style="text-align: center;">计划行号</th> <th data-column="option14" style="text-align: center;">路局计划号</th> <th data-column="option15" style="text-align: center;">路局采购单号</th> <th data-column="option16" style="text-align: center;">SAP物料</th> <th data-column="option17" style="text-align: center;">物料描述</th> <th data-column="option18" style="text-align: center;">基本计量单位</th> <th data-column="option19" style="text-align: center;">物资编码</th> <th data-column="option20" style="text-align: center;">数量</th> <th data-column="option21" style="text-align: center;">不含税单价</th> <th data-column="option22" style="text-align: center;">税率</th> <th data-column="option23" style="text-align: center;">含税金额合计</th> <th data-column="option24" style="text-align: center;">价格来源</th> <th data-column="option25" style="text-align: center;">退货数量</th> <th data-column="option26" style="text-align: center;">应开票数量</th> <th data-column="option27" style="text-align: center;">应开票金额</th> <th data-column="option28" style="text-align: center;">已开票数量</th> <th data-column="option29" style="text-align: center;">已开票税前金额</th> <th data-column="option30" style="text-align: center;">已开票税后金额</th> <th data-column="option31" style="text-align: center;">未开票数量</th> <th data-column="option32" style="text-align: center;">未开票税前金额</th> <th data-column="option33" style="text-align: center;">未开票税后金额</th> <th data-column="option34" style="text-align: center;">批次</th> <th data-column="option35" style="text-align: center;">物料来源</th> <th data-column="option36" style="text-align: center;">库存地点</th> <th data-column="option37" style="text-align: center;">开票状态</th> <th data-column="option38" style="text-align: center;">车型</th> <th data-column="option39" style="text-align: center;">单价</th> <th data-column="option40" style="text-align: center;">车组号</th> <th data-column="option41" style="text-align: center;">修程</th> <th data-column="option42" style="text-align: center;">货主</th> <th data-column="option43" style="text-align: center;">总价</th> </tr> </thead> <tbody id="info"> </tbody> </table> </div> </div> </div> </div> <!--_footer 作为公共模版分离出去--> <script type="text/javascript" src="../lib/jquery/1.9.1/jquery.min.js"></script> <script type="text/javascript" src="../lib/layer/2.4/layer.js"></script> <script type="text/javascript" src="../static/h-ui/js/H-ui.min.js"></script> <script type="text/javascript" src="../static/h-ui.admin/js/H-ui.admin.js"></script> <script type="text/javascript" src="../js/apply.js"></script> <!--/_footer 作为公共模版分离出去--> <!--业务相关脚本--> <script type="text/javascript" src="../lib/hcharts/Highcharts/5.0.6/js/highcharts.js"></script> <script type="text/javascript" src="../lib/hcharts/Highcharts/5.0.6/js/modules/exporting.js"></script> <script type="text/javascript" src="../lib/My97DatePicker/4.8/WdatePicker.js"></script> <script type="text/javascript" src="../lib/datatables/1.10.0/jquery.dataTables.min.js"></script> <script type="text/javascript" src="../lib/laypage/1.2/laypage.js"></script> <script type="text/javascript" src="../js/xlsx.full.min.js"></script> <script type="text/javascript" src="../js/sheetJson.js"></script> <script type="text/javascript"> var baseurl = getURL(); $(function () { startCookie(); selectDate2(); // submit_order(); }); // 日期选择相关函数 function getThisYear() { var now = new Date(); var year = now.getFullYear(); return [year + "-01-01", year + "-12-31"]; } function getThreeYear() { var now = new Date(); var year = now.getFullYear(); return [(year - 2) + "-01-01", year + "-12-31"]; } function getTenYear() { var now = new Date(); var year = now.getFullYear(); return [(year - 9) + "-01-01", year + "-12-31"]; } function selectDate1() { var thisYear = getThisYear(); $("#date1").val(thisYear[0]); $("#date2").val(thisYear[1]); } function selectDate2() { var threeYear = getThreeYear(); $("#date1").val(threeYear[0]); $("#date2").val(threeYear[1]); } function selectDate3() { var tenYear = getTenYear(); $("#date1").val(tenYear[0]); $("#date2").val(tenYear[1]); } // 生成复选框选中状态数组 function generateOptionList() { const checkboxes = document.querySelectorAll('input[name="option"]'); return Array.from(checkboxes).map(checkbox => checkbox.checked ? 1 : 0); } // 复选框与表格列同步逻辑 document.addEventListener('DOMContentLoaded', function () { const checkboxes = document.querySelectorAll('input[name="option"]'); const tableHeaders = document.querySelectorAll('#testCheck th'); const tableRows = document.querySelectorAll('#testCheck tbody tr'); // 初始化表格列显示 updateTableColumns(); // 监听复选框变化 checkboxes.forEach(checkbox => { checkbox.addEventListener('change', updateTableColumns); }); // 更新表格列显示状态 function updateTableColumns() { const selectedColumns = Array.from(checkboxes) .filter(cb => cb.checked) .map(cb => cb.value); // 更新表头 tableHeaders.forEach(header => { const columnName = header.getAttribute('data-column'); header.style.display = selectedColumns.includes(columnName) ? 'table-cell' : 'none'; }); // 更新数据行 tableRows.forEach(row => { const cells = row.querySelectorAll('td'); cells.forEach((cell, index) => { cell.style.display = tableHeaders[index].style.display; }); }); } window.updateTableColumns = updateTableColumns; }); // 查询函数 var printCase = []; function submit_order() { var pkStr = ""; var date1 = $("#date1").val(); var date2 = $("#date2").val(); // 获取下拉框选中的文本内容 var fhkhbh = document.querySelector('#fhkhbh option:checked')?.textContent || ''; var lldw = document.querySelector('#lldw option:checked')?.textContent || ''; var wlly = document.querySelector('#wlly option:checked')?.textContent || ''; var kcdd = document.querySelector('#kcdd option:checked')?.textContent || ''; var kpzt = document.querySelector('#kpzt option:checked')?.textContent || ''; var cx = document.querySelector('#cx option:checked')?.textContent || ''; var xc = document.querySelector('#xc option:checked')?.textContent || ''; // 拼接日期条件 if (date1) pkStr += "cjsj>='" + date1 + "'&&"; if (date2) pkStr += "cjsj<='" + date2 + "'&&"; // 拼接下拉框条件(包含查询) if (fhkhbh !== "所有") pkStr += "fhkhbh conta'" + fhkhbh + "'&&"; if (lldw !== "所有") pkStr += "lldw conta'" + lldw + "'&&"; if (wlly !== "所有") pkStr += "wlly conta'" + wlly + "'&&"; if (kcdd !== "所有") pkStr += "kcdd conta'" + kcdd + "'&&"; if (kpzt !== "所有") pkStr += "kpzt conta'" + kpzt + "'&&"; if (cx !== "所有") pkStr += "cx conta'" + cx + "'&&"; if (xc !== "所有") pkStr += "xc conta'" + xc + "'&&"; // 处理末尾多余的&& if (pkStr.length >= 2 && pkStr.slice(-2) === "&&") { pkStr = pkStr.slice(0, -2); } console.log("查询条件:", pkStr); $.ajax( { type: "post", url: baseurl + "chazhao/", dataType: 'json', data: { tablename: "`jjmx(c)`", pk: pkStr, }, beforeSend: function () { $("#over").show(); $("#layout").show(); }, success: function (res) { console.log("查询结果:", res); var result = res.data || []; var newResult = []; for (var i = 0; i < result.length; i++) { if (result[i]) newResult.push(result[i]); } // 表格配置 // 处理空值 console.log("newResult:"); console.log(newResult); var ifLeft = 1; var ifTop = 1; var title = [ "出库单号", "出库单序号", "出库单状态", "创建时间", "创建人", "销售办公室", "发货客户编号", "客户名称", "领料单位", "领料人", "过账日期", "计划编号", "计划行号", "路局计划号", "路局采购单号", "SAP物料", "物料描述", "基本计量单位", "物资编码", "数量", "不含税单价", "税率", "含税金额合计", "价格来源", "退货数量", "应开票数量", "应开票金额", "已开票数量", "已开票税前金额", "已开票税后金额", "未开票数量", "未开票税前金额", "未开票税后金额", "批次", "物料来源", "库存地点", "开票状态", "车型", "单价", "车组号", "修程", "货主", "总价"] var titledisplay = generateOptionList(); var ifDetailInfo = ["0",]; var ifCheckBox = 0; var ifDetail = []; var operating = []; var rowArray = [ "ckdh", "ckdxh", "ckdzt", "cjsj", "cjr", "ssbgs", "fhkhbh", "khmc", "lldw", "llr", "gzrq", "jhbh", "jjhh", "ljjhh", "ljcgdh", "sapwl", "wpms", "jbjldw", "wzbm", "number", "bhsjg", "sl", "hsjehj", "jgly", "thsl", "ykpsl", "ykpje", "ykpsl-already", "ykpsqje", "ykpshje", "wkpsl", "wkpsqje", "wkpshje", "pc", "wlly", "kcdd", "kpzt", "cx", "dj", "czh", "xc", "hz", "zj"]; for (var i = 0; i < newResult.length; i++) { for (var j = 0; j < rowArray.length; j++) { if (newResult[i][rowArray[j]] === null || newResult[i][rowArray[j]] === "" || newResult[i][rowArray[j]] === undefined) { newResult[i][rowArray[j]] = ""; } } } console.log("newResult:"); console.log(newResult); var rowdisplay = titledisplay var allCon = showTable(ifLeft, ifTop, title, newResult, ifDetailInfo, ifCheckBox, ifDetail, operating, rowArray, titledisplay, rowdisplay); $("#testCheck").dataTable().fnDestroy();//彻底清空表格数据 $('#title').empty().append(allCon[0]); $('#info').empty().append(allCon[1]); $('.table-sort').dataTable({ "aaSorting": [ [0, "asc"] ], //从第0列开始,第1列倒序排序 "bStateSave": true, //状态保存 "bRetrieve": true, "aoColumnDefs": [ //{"bVisible": false, "aTargets": [ 3 ]} //控制列的隐藏显示 {"orderable": false} // 制定列不参与排序 // { "orderable": false, "aTargets": [1] } // 制定列不参与排序 ] }); }, complete: function () { // 可以在这里隐藏加载提示 } }); } // 导出Excel函数 function downloadExl1() { var pkStr = ""; var date1 = $("#date1").val(); var date2 = $("#date2").val(); // 获取下拉框选中的文本内容 var fhkhbh = document.querySelector('#fhkhbh option:checked')?.textContent || ''; var lldw = document.querySelector('#lldw option:checked')?.textContent || ''; var wlly = document.querySelector('#wlly option:checked')?.textContent || ''; var kcdd = document.querySelector('#kcdd option:checked')?.textContent || ''; var kpzt = document.querySelector('#kpzt option:checked')?.textContent || ''; var cx = document.querySelector('#cx option:checked')?.textContent || ''; var xc = document.querySelector('#xc option:checked')?.textContent || ''; // 拼接日期条件 if (date1) pkStr += "cjsj>='" + date1 + "'&&"; if (date2) pkStr += "cjsj<='" + date2 + "'&&"; // 拼接下拉框条件(包含查询) if (fhkhbh !== "所有") pkStr += "fhkhbh conta'" + fhkhbh + "'&&"; if (lldw !== "所有") pkStr += "lldw conta'" + lldw + "'&&"; if (wlly !== "所有") pkStr += "wlly conta'" + wlly + "'&&"; if (kcdd !== "所有") pkStr += "kcdd conta'" + kcdd + "'&&"; if (kpzt !== "所有") pkStr += "kpzt conta'" + kpzt + "'&&"; if (cx !== "所有") pkStr += "cx conta'" + cx + "'&&"; if (xc !== "所有") pkStr += "xc conta'" + xc + "'&&"; // 处理末尾多余的&& if (pkStr.length >= 2 && pkStr.slice(-2) === "&&") { pkStr = pkStr.slice(0, -2); } $.ajax({ type: "post", url: baseurl + "chazhao/", dataType: 'json', data: { tablename: "`jjmx(c)`", pk: pkStr, }, beforeSend: function () { $("#over").show(); $("#layout").show(); }, success: function (res) { var result = res.data || []; var newResult = []; for (var i = 0; i < result.length; i++) { if (result[i]) newResult.push(result[i]); } // 导出字段配置 var sheetNameMap = { "出库单号": "ckdh", "出库单序号": "ckdxh", "出库单状态": "ckdzt", "创建时间": "cjsj", "创建人": "cjr", "销售办公室": "ssbgs", "发货客户编号": "fhkhbh", "客户名称": "khmc", "领料单位": "lldw", "领料人": "llr", "过账日期": "gzrq", "计划编号": "jhbh", "计划行号": "jjhh", "路局计划号": "ljjhh", "路局采购单号": "ljcgdh", "SAP物料": "sapwl", "物料描述": "wpms", "基本计量单位": "jbjldw", "物资编码": "wzbm", "数量": "number", "不含税单价": "bhsjg", "税率": "sl", "含税金额合计": "hsjehj", "价格来源": "jgly", "退货数量": "thsl", "应开票数量": "ykpsl", "应开票金额": "ykpje", "已开票数量": "ykpsl-already", "已开票税前金额": "ykpsqje", "已开票税后金额": "ykpshje", "未开票数量": "wkpsl", "未开票税前金额": "wkpsqje", "未开票税后金额": "wkpshje", "批次": "pc", "物料来源": "wlly", "库存地点": "kcdd", "开票状态": "kpzt", "车型": "cx", "单价": "dj", "车组号": "czh", "修程": "xc", "货主": "hz", "总价": "zj" }; // 转换导出数据格式 var exportData = newResult.map(item => { var data = {}; Object.keys(sheetNameMap).forEach(key => { data[key] = item[sheetNameMap[key]] || ""; }); return data; }); // 导出Excel var workbook = sheetJson.toSheet({ sheetName: Object.keys(sheetNameMap), datas: exportData }); sheetJson.downloadExl(workbook, "销售明细查询(长春)汇总"); }, complete: function () { $("#over").hide(); $("#layout").hide(); }, error: function (err) { console.error("导出失败:", err); $("#over").hide(); $("#layout").hide(); } }); } </script> </body> </html>前端页面不显示数据,我基金崩溃
11-28
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值