el-table 封装表格(完整代码-实时更新)

最新更新时间: 2024年9月6号

1. 添加行内编辑、表头搜索

<template><!-- 简单表格、多层表头、页码、没有合并列行 --><div class="maintenPublictable"element-loading-background="rgba(255,255,255,0.5)"><!--cell-style 改变某一列行的背景色 --><!-- tree-props 配置树形子表row-click: 某一行单击事件highlight-current-row:高亮选中某行default-expand-all:默认是否展开字列表current-change:管理选中时触发的事件selection-change:多选框row-key="id":    id:一定要跟后台返回来的id一致,不一致,会出错show-summary: 显示合计summary-method: 合计指定的某一列row-dblclick: 某一行被双击:row-class-name="tableRowClassName" :行样式stripe :斑马纹bordershow-overflow-tooltip :=true(默认是true) 当内容过长被隐藏时,会在hover时以tooltip的形式显示出来.若=false,那么数据就可以换行展示.[可以设置为动态改变]--><!-- :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"        stripe--><el-tablestyle="background: transparent !important"borderclass="rollTableRow"ref="table":data="tableData":height="heights":show-summary="showSum":summary-method="getSummaries"@selection-change="handleSelectionChange":key="itemKey":cell-style="tableCellStyle"@row-click="clickRow"@row-dblclick="rowDblclick"row-key="ID":default-expand-all="defaultall":highlight-current-row="highlightCurrent"@current-change="handleCurrentChangeRow":tree-props="{ children: 'Children' }"header-row-class-name="headerStyle"v-loading="loading"element-loading-text="拼命加载中":element-loading-svg="svg":header-cell-style="{ background: '#f8f8f9' }"><el-table-column type="selection"v-if="isSelection"width="55"></el-table-column><el-table-columntype="index" v-if="isIDx"width="80"align='center'label="序号"></el-table-column><templatev-for="(item, index) in tableHeader"><!-- 1. 这是第一层 --><!-- sortable: 排序     item.direction; item.direction 方向,判断居中还是靠右 --><el-table-columnv-if="!item.child":key="index":prop="item.prop":label="item.label"header-align="center":align="item.align || 'center'":min-width="item.width":sortable="item.sortable"show-overflow-tooltip><!-- 新增插槽,用于表头添加搜索; visible=true popover组件展示, @keydown.enter 回车事件, titleSelectinput 搜索值--><template #header >{{item.label}}<el-popover :visible="item.visible" placement="top" :width="160"  :ref="`popover-${index}`" v-if="item.label=='操作类型'"><el-input v-model="titleSelectinput"  placeholder="请输入搜索条件"   @keydown.enter="changeData($event,index,item)"/><template #reference><el-button  circle class="buttonIcon"><el-icon @click="Ones(item,index)"><Search /></el-icon></el-button></template></el-popover>  </template><!-- 用于行内编辑,前提是每条数据中必须有show字段,若show=true,当前行为编辑状态 --><template #default="scope"><el-input  v-if="scope.row.show"  v-model="scope.row[item.prop]"  @keyup.enter="saveEdit(scope.$index, scope.row)"  placeholder="请输入内容">  </el-input> <span v-else>  {{ scope.row[item.prop] }}  </span>  </template></el-table-column><!-- 二级表头 --><el-table-column v-else:key="index + 1":prop="item.prop":label="item.label":type="item.type":align="item.align || 'center'"><templatev-for="(childItem, index) in item.child"><!-- 三级表头 --><el-table-columnv-if="!childItem.child":key="index":prop="childItem.prop":label="childItem.label"header-align="center":align="childItem.center":min-width="childItem.width"></el-table-column><el-table-column v-else:key="index + 1":prop="childItem.prop":label="childItem.label":type="childItem.type":align="childItem.align || 'center'"><templatev-for="(childItem, index) in item.child"><!-- 这是第三层 --><el-table-columnv-if="!childItem.child":key="index":prop="childItem.prop":label="childItem.label"header-align="center":align="childItem.center":min-width="childItem.width"></el-table-column><el-table-column v-else:key="index + 1":prop="childItem.prop":label="childItem.label":type="childItem.type":align="childItem.align || 'center'"></el-table-column></template></el-table-column></template></el-table-column></template><!-- 表格最后一列是否是勾选框【完成情况】 --><el-table-column v-if="isSelect"align="center"><!-- slot="header" 替换成=>#header; slot-scope="scope"替换成=>#default="scope"--><template #header><el-checkbox @change="allCheck(isAllcheck, tableData, ClickIdsList, isIndeterminate)"size="large"v-model="isAllcheck":indeterminate="isIndeterminate"></el-checkbox>完成情况</template><template #default="scope"><el-checkbox@change="OnesClick(scope.row)"v-model="scope.row.check"class="ml-4"size="large"></el-checkbox></template></el-table-column><!-- 容量空间占比 1--><el-table-columnv-if="isSplaceShow"align="center"label="存储容量占比"><template #default="scope"><el-progress:text-inside="true":stroke-width="26":percentage="scope.row.one"></el-progress>{{ scope.row.one }}/{{ scope.row.two }}</template></el-table-column><!-- 空间占比 1.1--><el-table-columnv-if="isSplaceShow && isJueseRong"align="center"label="操作列"><template #default="scope"><!-- handleEdit(scope.$index, scope.row) --><el-button@click="spaceFenpei(scope.$index, scope.row)">容量分配(Gb)</el-button></template></el-table-column><!--      是否启用--><el-table-column v-if="isSwitch"align="center"label="是否启用"><template #default="scope"><!-- handleEdit(scope.$index, scope.row) --><el-switchv-model="scope.row.switchValue"active-color="#13ce66"inactive-color="#ff4949"@change="switchChange(scope.row)"></el-switch></template></el-table-column><!-- 查看权限--><el-table-column v-if="isCaozuo"align="center"label="操作列"><template #default="scope"><!-- handleEdit(scope.$index, scope.row) --><el-button@click="caozuoBtn(scope.$index, scope.row)">查看权限</el-button></template></el-table-column><!-- 查看详情 --><el-table-column v-if="isLook"align="center"label="查看详情"><template #default="scope"><el-button@click="isLookBtn(scope.$index, scope.row)">查看详情</el-button></template></el-table-column><el-table-column v-if="isanewBtn"align="center"label="重试"><template #default="scope"><el-buttonv-show="scope.row.success == '1' ? true : false"@click="anewBtn(scope.$index, scope.row)"type="text">重试</el-button></template></el-table-column><!-- 操作日志 查看详情 --><el-table-column v-if="usertime5"align="center"label="操作"width="200"><template #default="scope"><el-button@click="isLookBtn(scope.$index, scope.row)">详情</el-button><el-button@click="isLookBtn1(scope.$index, scope.row)">重试</el-button></template></el-table-column><!-- 编辑+删除 --><el-table-column v-if="isUpdataDel"align="center"label="操作"width="200"><template #default="scope"><el-button@click="UpdataclickDel(scope.$index, scope.row)">编辑</el-button><el-button@click="UpdataclickDel(scope.$index, scope.row)">删除</el-button></template></el-table-column></el-table><!--  分页 --><div v-if="showFenYe"class="fenYeStyle"><el-pagination@size-change="handleSizeChange"@current-change="handleCurrentChange":current-page="page.currentPage":page-sizes="[5, 10, 15, 20]":page-size="page.pagesize"layout="total, sizes, prev, pager, next, jumper":total="page.total"></el-pagination></div></div>
</template>
<script>
// import preventBack from "vue-prevent-browser-back"; //阻止返回
import { PublicFunction } from "@/utils/vuePublic"
import { ClickOutside as vClickOutside } from "element-plus";
export default {name: "maintenPublictable",components: {},props: {// 接收的是:是否有分页、是否有勾选columns: {type: Object,default: {},},// 接收的是:页码pagination: {type: Object,default: {},},},data () {return {titleSelectinput:"",//记录表头搜索值visible:false,//popover弹出框tableHeader: [], //表头tableData: [], //数据itemKey: "",types: 1, //用于合并,判断是否需要合并//#region 与父组件关联heights: 1,getHeight: 20, //高度isSelect: false, //勾选框isSplaceShow: false, //容量占比isCaozuo: false, //操作列isLook: false, //查看详情isanewBtn: false, //重试showFenYe: false, //是否有分页isSelection: false, //是否有多选框isIDx:false,//是否显示前面的序号isTag: false, //是否有标签defaultall: false, //是否默认展开所有行(用于有树状结构的表格)highlightCurrent: false, //高亮选中showSum: false, //合计//#endregion// 页码page: {currentPage: 1, //当前页pagesize: 10, //当前页的条数total: 20, //总数},//多选框multipleSelection: [],//#region 用于右侧的完成情况//选择isAllcheck: false, //全选ClickIdsList: [], //已选择集合组isIndeterminate: false, //部分选中,默认是false//#endregionloading: false,flag: 1,//操作列:容量分配功能 显示隐藏isJueseRong: true,//敏感词启用禁用isSwitch: false,// 操作日志usertime5: false,isUpdataDel:false,//操作列-【编辑+删除】}},// mixins: [preventBack], //注入  阻止返回上一页created () {// this.heights = window.innerHeight - 200;},watch: {// 监听对象的写法(监听页码的变化)pagination: {handler (newValue, oldVal) {this.page.total = newValue.total},deep: true, // 深度监听// immediate: true, //写上它,初始化时也会调用监听},},mounted () {this.$nextTick(() => {if (this.$refs.table != null) {this.$refs.table.$el.getBoundingClientRect().top //表格距离浏览器的高度let heightswitch (this.flag) {case 1:height = 0breakcase 2:height = 80breakcase 3:height = 110breakcase 4:height = -65breakcase 7:height = 90breakcase 8:height = -30breakcase 9:height = 160breakdefault:break}// 根据浏览器高度设置初始高度this.heights =window.innerHeight - this.$refs.table.$el.offsetTop - 270 - height// 监听浏览器高度变化,修改表格高度window.onresize = () => {this.heights =window.innerHeight - this.$refs.table.$el.offsetTop - 270 - height}}})this.init()},methods: {//#region 动态更改行颜色tableRowClassName({row, rowIndex}) {if (rowIndex === 1) {return 'warning-row'; //warning-row 类名} else if (rowIndex === 3) {return 'success-row';}return '';},//#endregion//#region 行内编辑/** 操作列-》实现行内编辑*  index:索引;row:当行数据*/UpdataclickDel(index,row) {this.tableData[index] = { ...row, show: true }; //更新数组中的某个元素},/*** 用于行内编辑的回车事件*/saveEdit(index,row){this.tableData[index] = { ...row, show: false }; //更新数组中的某个元素console.log(this.tableData[index],'获取修改之后的值并调用编辑的接口');},
//#endregion//#region 表头添加搜索插槽 /*** 表头icon的点击事件*/Ones (val,index) {this.tableHeader[index].visible=!this.tableHeader[index].visible},/*** 回车事件*/changeData(event,index,item) {if (!event.ctrlKey) {// 如果没有按下组合键ctrl,则会阻止默认事件event.preventDefault();this.test(index,item);} else {// 如果同时按下ctrl+回车键,则会换行this.orderInfo += '\n';}},/*** 实际上就是 按回车键,将搜索条件存下来,调用方法*/test(index,item){//  console.log('触发了回车事件,并且没有换行喔~');this.tableHeader[index].visible=!this.tableHeader[index].visiblelet query1=item.proplet query2=this.titleSelectinputlet param = {};  //使用方括号语法动态设置对象的键 param[query1] = query2;  console.log(param,'获取输入的条件',this.titleSelectinput);},//#endregion//在父组件初始化时,需要获得页码,所以子组件初始化时把页码传过去init () {let _this = this_this.getHeight = this.columns.getHeight_this.showSum = this.columns.showSum //合计_this.defaultall = this.columns.defaultall //是否展开所有行_this.isSelect = this.columns.isSelect //右侧的完成情况_this.isSplaceShow = this.columns.isSplaceShow //容量占比_this.isCaozuo = this.columns.isCaozuo //容量占比_this.isLook = this.columns.isLook //查看详情_this.isanewBtn = this.columns.isanewBtn //重试_this.isTag = this.columns.isTag //是否有标签_this.usertime5 = this.columns.usertime5 //是否有标签_this.isUpdataDel = this.columns.isUpdataDel //是否展示【编辑+删除】_this.showFenYe = this.columns.showFenYe_this.isSelection = this.columns.isSelection //左侧的多选框_this.isIDx = this.columns.isIDx //是否显示前面的序号_this.highlightCurrent = this.columns.highlightCurrent //高亮选中_this.page.total = this.pagination.total_this.$emit("getPage", {data: {pageSize: _this.page.pagesize,pageNum: _this.page.currentPage,isTypes: 1,},})this.SetDataTableHeader()},//#region 页码//一页有多少条数据handleSizeChange (val) {let _this = this_this.page.pagesize = val// 子传父_this.$emit("getPage", {data: {pageSize: _this.page.pagesize,pageNum: _this.page.currentPage,isTypes: 2,},})},//第几页/切换页码handleCurrentChange (val) {let _this = this_this.page.currentPage = val_this.$emit("getPage", {data: {pageSize: _this.page.pagesize,pageNum: _this.page.currentPage,isTypes: 2,},})},//#endregion/**表头赋值* @param GetDataLists 表头* @param flag 用于动态更改table高度*/SetDataTableHeader (GetDataLists, flag) {//重新渲染,itemKey用于处理Table不渲染的问题this.itemKey = Math.random()this.flag = flag ? flag : this.flag//重新渲染数据表this.tableHeader = GetDataLists},//table值SettableData (tabledata) {console.log(tabledata, "数据威慑")let _this = thisthis.itemKey = Math.random()_this.tableData = tabledata},//左侧:多选框handleSelectionChange (val) {console.log(val, "handleSelectionChange")this.multipleSelection = valthis.$emit("handleSelectionChange", val)},//#region 插槽/*** 容量分配*/spaceFenpei (index, val) {this.$emit("handlespaceFenpei", val)},/*** 操作列*/caozuoBtn (index, val) {this.$emit("handlecaozuoBtn", val)},/*** 查看详情*/isLookBtn (index, val) {this.$emit("handleisLookBtn", val)},/*** 查看详情*/isLookBtn1 (index, val) {this.$emit("handleisLookBtn1", val)},/*** 接入中心---重试*/anewBtn (index, val) {this.$emit("handleanewBtnBtn", val)},// 是否启用---切换开关的时候switchChange (val) {this.$emit("getchangeswicth", val)},//#endregion//#region 下面这个是用于最右侧的完成情况//全选 调取公共js文件的方法allCheck (isAll, tableData, checkList, isCheck) {//接收传过来的值let objData = PublicFunction.allCheck(isAll,tableData,checkList,isCheck)this.isAllcheck = objData.isAllthis.ClickIdsList = objData.checkList},//单行选择OnesClick (rows) {if (rows.check) {this.ClickIdsList.push(rows.id)} else {let index = this.ClickIdsList.indexOf(rows.id)this.ClickIdsList.splice(index, 1)}this.isIndeterminate =this.ClickIdsList.length > 0 &&this.ClickIdsList.length < this.tableData.lengththis.isAllcheck = this.ClickIdsList.length == this.tableData.length},//#endregion// 合并单元格objectSpanMethod ({ row, column, rowIndex, columnIndex }, tableData, types) {if (types === 1) {switch (columnIndex // 将列索引作为判断值) {// 通过传递不同的列索引和需要合并的属性名,可以实现不同列的合并(索引0,1 指的是页面上的0,1)case 2:return PublicFunction.MergeCol(tableData, "itemDetail", rowIndex)case 1:return PublicFunction.MergeCol(tableData, "item", rowIndex)}} else {//保障作业switch (columnIndex) {case 1:return PublicFunction.MergeCol(tableData, "item", rowIndex)}}//判断检查内容是否为空// if (//   tableData[columnIndex].checkContent != undefined ||//   tableData[columnIndex].checkContent != null// ) {// } else {// }},// 提交(在父组件点击提交时调用这个方法)childSumbit () {let param = {tabledata: this.tableData,ClickIdsList: this.ClickIdsList,multipleSelection: this.multipleSelection,}// 把值传给父组件this.$emit("sumbitData", param)},//#region 点击事件整合//行点击事件clickRow (row, column, event) {this.$emit("rowClick", row)this.toggleSelection(row) //如果前面有多选框,则单击时多选框也勾选console.log('单击行事件',val);},//某一行被双击rowDblclick (row, column, event) {this.$emit("rowDoubleClick", row)},// 行选中事件handleCurrentChangeRow (val) {this.$emit("handleCurrentChangeRow", val)},//#region 单击某一行,该行多选框显示已选中/*** 单击某一行,该行多选框显示已选中*/toggleSelection (rows) {if (rows) {// rows.forEach((row) => {//   this.$refs.table.toggleRowSelection(row);// });this.$refs.table.toggleRowSelection(rows)} else {this.$refs.table.clearSelection()}},toggleRowSelection (val) {this.$nextTick(() => {this.$refs.table.toggleRowSelection(val, true)})},//#endregion//#endregion// 改变某一列的行的背景色tableCellStyle ({ row, column, rowIndex, columnIndex }) {//如果是第一列// if (columnIndex === 1) {//   //如果这一行的字段==未维护//   if (row.state == "未维护") {//     // 如果是未维护——背景色浅蓝色,字体色蓝色;//     return "background:#ecf5ff; color:#409eff";//   } else if (row.state == "已维护") {//     // 如果是已维护——背景色绿色,字体色白色;//     return "background:#67c23aa6;color:#fff ";//   } else if (row.state == "部分维护") {//     // 如果是已维护——背景色棕色,字体色白色;//     return "background:#e6a23cab;color:#fff ";//   } else {//   }// } else {if (row.EliminateTime < 24 && columnIndex === 7) {return { color: "red" }}},// 取消选择setCurrent () {this.$refs.table.setCurrentRow()},// 合计 指定某一列添加合计getSummaries (param) {const { columns, data } = paramconst sums = []columns.forEach((column, index) => {if (index === 0) {sums[index] = "合计"return} else if (column.property == "Amount") {//如果是经费(正常的加减法)const values = data.map((item) => Number(item[column.property]))if (!values.every((value) => isNaN(value))) {sums[index] = values.reduce((prev, curr) => {const value = Number(curr)var sum = 0if (!isNaN(value)) {sum = Number(Number(prev) + Number(curr)).toFixed(2)return sum} else {return prev}}, 0)sums[index] += " "}}})return sums},},//#endregion
};
</script><style scoped lang='scss'>
.maintenPublictable {background: #fff;
}
// 表土icon样式
.buttonIcon{background-color: transparent;border-color: transparent;padding-left: 0;}
//表头icon 样式::v-deep .el-button:focus-visible {outline: 2px solid #fdfdfd;
}
/*!* 表格表头 *!*/
/*.maintenPublictable ::v-deep .el-table th,*/
/*::v-deep .el-table thead.is-group th.el-table__cell {*/
/*  !* background: linear-gradient(147deg, #70c0ff, #2f9fff); *!*/
/*  !* background: transparent; *!*/
/*  background: #295d85;*/
/*  color: #fff;*/
/*  padding: 0;*/
/*  margin: 0;*/
/*  height: 3rem !important;*/
/*}*//*!*****滚动条影藏 *!*//*::v-deep .el-table--scrollable-y ::-webkit-scrollbar {*/
/*  display: none !important;*/
/*}*//*!**lable名字 *!*/
/*::v-deep .el-checkbox__label {*/
/*  color: #fff;*/
/*}*//*!* 背景透明 *!*/
/*::v-deep .el-table tr {*/
/*  background-color: transparent;*/
/*  color: #fff;*/
/*}*//*!* 表格背景透明 *!*/
/*.rollTableRow {*/
/*  background: transparent;*/
/*  !* border边框 *!*/
/*  --el-table-border-color: transparent;*/
/*}*//*!* 表格背景图 *!*/
/*.maintenPublictable {*/
/*  !*background: url("@/assets/imgList/tableBG.png") no-repeat;*!*/
/*  background-size: 100% 100%;*/
/*  padding: 4%;*/
/*}*//*!* 鼠标悬浮时 表格背景色及字体颜色 *!*/
/*::v-deep .el-table tbody tr:hover > td {*/
/*  background-color: rgb(65, 111, 180) !important;*/
/*  color: #ffffff;*/
/*}*//*!* 斑马线颜色 *!*/
/*::v-deep*/
/*  .el-table--striped*/
/*  .el-table__body*/
/*  tr.el-table__row--striped*/
/*  td.el-table__cell {*/
/*  background: #295d85;*/
/*}*//*!* 箭头 *!*/
/*::v-deep .el-table__expand-icon > .el-icon {*/
/*  color: #f3f3f3;*/
/*}*/
</style><style scoped>
/*!* 页码 *!*/
/*::v-deep .el-pagination__total,*/
/*::v-deep .el-pagination__jump {*/
/*  color: #f3f3f3;*/
/*}*//*::v-deep .el-select .el-input__wrapper {*/
/*  cursor: pointer;*/
/*  background-color: #418de7;*/
/*  border: none;*/
/*  box-shadow: none;*/
/*}*//*::v-deep .el-select .el-input__inner {*/
/*  cursor: pointer;*/
/*  color: #f3f3f3;*/
/*}*//*::v-deep .el-pager li.is-active {*/
/*  color: #f3f3f3;*/
/*  cursor: default;*/
/*  font-weight: 700;*/
/*  background-color: #418de7;*/
/*}*//*!* 箭头按钮 *!*/
/*::v-deep .el-input__wrapper,*/
/*::v-deep .el-pagination button:disabled,*/
/*::v-deep .el-pagination button,*/
/*::v-deep .btn-next {*/
/*  background-color: #418de7;*/
/*  box-shadow: none;*/
/*  color: #f3f3f3;*/
/*}*/::v-deep .el-pagination {margin-top: 10px !important;
}/*::v-deep .el-pager li.is-active,*/
/*::v-deep .el-pager li {*/
/*  background-color: #418de7;*/
/*  color: #f3f3f3;*/
/*}*/
.maintenPublictable {background: transparent !important;
}
/*!*最外层透明*!*/
.maintenPublictable .el-table,
.el-table__expanded-cell {border: none !important;
}
/*!* 表格内背景颜色 *!*/
/* ::v-deep .el-table th,
::v-deep .el-table tr,
::v-deep .el-table td {background-color: transparent;
} */
/* ::v-deep .el-table td.el-table__cell, .el-table th.el-table__cell.is-leaf {border-bottom: 0 !important;
} */
/* a5c4f7  */
::v-deep .el-table td.el-table__cell,
.el-table th.el-table__cell.is-leaf {/* line-height: 3rem; */font-size: 16px;
}/*!* 鼠标悬浮时 表格背景色及字体颜色 *!*/
/* ::v-deep .el-table tbody tr:hover > td {background-color: rgb(91, 179, 254) !important;color: #ffffff;
} */
/* 高亮的颜色 */
/* ::v-deep .el-table__body tr.current-row>td.el-table__cell {background-color: #5296ff;} */
::v-deep .el-pagination {justify-content: flex-end;
}
</style>

PS:此代码仅用于记录。

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

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

相关文章

新一代交互模式:LUICUIVUI

随着技术的发展&#xff0c;特别是人工智能和机器学习的进步&#xff0c;交互方式也在不断演变。以下是一些新概念&#xff0c;它们描述了当下和未来可能的交互方式&#xff1a; Conversational UI (CUI)&#xff1a; 以对话为基础的用户界面&#xff0c;用户通过自然语言与系统…

计算机网络(四) —— 简单Tcp网络程序

目录 一&#xff0c;服务器初始化 1.0 部分文件代码 1.1 关于Tcp协议 1.2 创建和绑定套接字 1.3 监听 二&#xff0c;服务器启动 2.1 获取连接 2.2 提供服务 2.3 客户端启动源文件 Main.cc 二&#xff0c;客户端编写 2.1 关于Tcp客户端 2.2 客户端代码 2.3 效果…

网络学习-eNSP配置多交换机VLAN

实验环境 通过华为eNSP软件实现 1.两台S3700交换机 2.四台电脑PC1&#xff1a;192.168.0.1PC2&#xff1a;192.168.0.2PC3&#xff1a;192.168.0.3PC4&#xff1a;192.168.0.4PC11&#xff1a;192.168.0.11PC22&#xff1a;192.168.0.22PC33&#xff1a;192.168.0.33PC44&…

win12R2安装.NET Framework 3.5

一丶安装原因 因此插件的缺失, 有些软件或系统不支持安装. 二丶安装步骤 1丶下载.NET Framework 3.5 点击插件下载, 提取码: 1995, 下载完成之后解压到想要安装的位置上. 2丶打开 服务器管理器 3丶点击: 管理 -> 添加角色和功能 4丶点击下一步到服务器角色, 选择web服…

IOS17.0安装巨魔:TrollRestore巨魔发布

&#x1f47b; TrollRestore 17.0 巨魔发布 15.0 - 16.7 RC&#xff08;20H18&#xff09;和17.0。 官网&#xff1a;https://trollrestore.com/ 下载&#xff1a;https://pan.metanetdisk.com/IOS/%E5%B7%A8%E9%AD%94%E7%8E%A9%E5%AE%B6/TrollRestore.com 使用&#xff1a;ht…

【技巧】Excel检查单元格的值是否在另一列中

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 用到的excel函数 IF(ISNUMBER(MATCH(H2, I2:I10, 0)), H2, "") 注意改上面的“H2、I2、I10”&#xff01; 函数效果 函数解释 检查单元格 …

Keysight U8031A DC power supply

Keysight U8031A DC power supply 文章目录 Keysight U8031A DC power supply前言电容充电⽰意图一、恒定电压操作二、恒定电流操作三、5v操作四、跟踪模式操作五、存储器操作六、对过电压保护编程七、对过电流保护编程八、锁键操作 前言 U8031A Power Supply 是一款具备前面板…

域取证的日志分析

目录 介绍步骤横向移动行为分析 介绍 1、evtx文件是微软从 Windows NT 6.0(Windows Vista 和 Server 2008) 开始采用的一种全新的日志文件格式。在此之前的格式是 evt 。evtx由Windows事件查看器创建&#xff0c;包含Windows记录的事件列表&#xff0c;以专有的二进制XML格式保…

关于武汉高芯coin417G2红外机芯的二次开发

文章目录 前言一、外观和机芯参数二、SDK的使用1、打开相机2、回调函数中获取全局温度和图像3、关闭相机 前言 最近工作中接触了一款基于武汉高芯科技有限公司开发的红外模组,即coin417g2(测温型)9.1mm镜头.使用此模组,开发了一套红外热成像检测桌面应用程序.下面简单记录下该…

【2024高教社杯全国大学生数学建模竞赛】B题模型建立求解

目录 1问题重述1.1问题背景1.2研究意义1.3具体问题 2总体分析3模型假设4符号说明&#xff08;等四问全部更新完再写&#xff09;5模型的建立与求解5.1问题一模型的建立与求解5.1.1问题的具体分析5.1.2模型的准备 目前B题第一问的详细求解过程以及对应论文部分已经完成&#xff…

RISC-V (九)抢占式多任务

主要的思想&#xff1a;借用定时器中断实现。设置定时器寄存器&#xff0c;系统自动触发定时器中断时会跳到trap handler这个函数里。借用这个函数做上下文的切换&#xff0c;从而实现了抢占式多任务。 定时器中断&#xff1a;跳到trap handler函数&#xff0c;同时系统自动将…

软考基础知识之计算机网络

目录 前言 网络架构与协议 网络互联模型 1、OSI/RM 各层的功能 2、TCP/IP 结构模型 常见的网络协议 1、应用层协议 2、传输层协议 3、网络层协议 IPv6 前言 从古代的驿站、 八百里快马&#xff0c; 到近代的电报、 电话&#xff0c; 人类对于通信的追求从未间断&…

心觉:你为什么没有更多的钱

很多人希望自己可以赚更多的钱 但是他的内心又很讨厌钱&#xff0c;他自己并不知道 一边希望自己赚更多钱&#xff0c;一边在骨子里觉得“金钱是万恶之源” 这是一种神经质的错乱 这种现象在什么情况下会表现得比较明显呢&#xff1f; 某位高官因为贪污受贿落马了&#xf…

风控系统之指标回溯,历史数据重跑

个人博客&#xff1a;无奈何杨&#xff08;wnhyang&#xff09; 个人语雀&#xff1a;wnhyang 共享语雀&#xff1a;在线知识共享 Github&#xff1a;wnhyang - Overview 回顾 默认你已经看过之前那篇风控系统指标计算/特征提取分析与实现01&#xff0c;Redis、Zset、模版方…

精通Java微服务

第1章 微服务是在面向服务架构SOA的基础上进一步发展而来的&#xff0c;它比SOA做得更加彻底&#xff0c;其单体服务被更加彻底地划分&#xff0c;最大限度地实现了服务的单一职责。 1.1.2互联网 即计算机网络&#xff0c;连接了世界上数以万计的计算机设备&#xff08;可联…

15、Django Admin添加自定义字段功能

修改模型类HeroAdmin admin.register(Hero) class HeroAdmin(admin.ModelAdmin):change_list_template "entities/heroes_changelist.html"... # 此处原代码不动&#xff0c;只增加此前后代码def get_urls(self):urls super().get_urls()my_urls [path(immort…

最新版 | SpringBoot3如何自定义starter(面试常考)

文章目录 一、自定义starter介绍二、自定义Starter的好处及优势三、自定义starter应用场景四、自定义starter1、创建autoconfigure的maven工程2、创建starter的maven工程3、在autoconfigure的pom文件中引入MyBatis的所需依赖4、编写自动配置类MyBatisAutoConfiguration5、编写i…

pdf文件编辑器有哪些?分享适合新手用的5个PDF编辑器(解锁教程)

pdf是一种通用文件格式&#xff0c;也是一种夸操作系统平台的文件格式。 好用的PDF文件编辑器可以让您更改和添加文本、编辑图像、添加图形、签署签名、填写表单数据等。下面整理了关于pdf文件编辑方法介绍&#xff0c;以及一些好用的pdf编辑器&#xff0c;有需要的可以了解下…

C# 通过拖控件移动窗体

目录 引言一、通过控件事件移动窗体1、创建窗体界面2、添加控件事件3、添加代码 二、通过windowsAPI移动窗体1、 构建窗体和添加事件2、代码展示 引言 在C#Form窗体设计中&#xff0c;如果我们不需要使用默认边框设计自己个性化的窗体&#xff08;FromBorderStylenone时&#…

LEAN 类型理论之注解(Annotations of LEAN Type Theory)-- 商类型(Quotient Type)

商类型&#xff08;Quotient Type&#xff09;&#xff0c;也称划分类型&#xff0c;通过给定义一个定义在某一类型 α 上的关系R&#xff1a;α → α→ ℙ&#xff0c;将类型α 中&#xff0c;满足关系R的元素摘出来&#xff0c;组成该商类型&#xff08;Quotient&#xff09…