

注:需要安装依赖 pnpm i sortablejs -S

<template>
<div style="padding: 15px">
<h3 style="text-align: left; padding: 10px; background: #ccc">
vue+element-ui+sortable.js表格行和列拖拽
</h3>
<!-- 属性border可实现单元格拖拽获得字段宽度的改变--`@header-dragend`具体参考官网的方法 -->
<el-table
ref="dataTable"
:data="customColumnList"
class="customer-table"
border
row-key="id"
align="left"
@select="handleSelectionChange"
>
<el-table-column
type="selection"
:selectable="checkSelectable"
align="center"
width="55"
></el-table-column>
<el-table-column prop="label" label="字段名" width="180">
<template slot-scope="scope">
{{ scope.row.label }}
</template>
</el-table-column>
<el-table-column prop="width" label="宽度" width="180">
<template slot-scope="scope">
<div class="right-box">
<p style="padding-right: 5px">宽度</p>
<el-input
style="width: 60px"
size="mini"
type="text"
v-model="scope.row.width"
@keyup.enter.native="this.rowDrop()"
></el-input>
<p style="padding-left: 5px">px</p>
</div>
</template>
</el-table-column>
</el-table>
</div>
</template>
<script>
import Sortable from "sortablejs";
export default {
name: "login",
data() {
return {
customColumnList: [
{
id: 1,
label: "linger1",
width: "220",
},
{
id: 2,
label: "linger2",
resizable: false,
width: "70",
},
{
id: 3,
label: "linger3",
width: "150",
},
{
id: 4,
label: "linger4",
width: "120",
resizable: false,
},
{
id: 5,
label: "linger5",
width: "200",
resizable: false,
},
],
hasSelectList: [1, 5, 2],
};
},
mounted() {
this.getTableData();
this.rowDrop();
},
methods: {
getTableData() {
// 默认选中
this.$nextTick(() => {
this.customColumnList.forEach((row) => {
if (this.hasSelectList.indexOf(row.id) >= 0) {
this.$refs.dataTable.toggleRowSelection(row, true);
}
});
});
},
// 监听复选框的选择
handleSelectionChange(section) {
this.hasSelectList = section.map((item) => item.id);
const List = this.customColumnList.filter((item) =>
section.map((items) => items.id).some((_item) => item.id === _item)
);
// 排序后的列表
console.log(List);
// console.log(this.hasSelectList);
},
// 设置失效的行数id=5不可勾选
checkSelectable(row) {
if (row.id !== 5) {
return true
}
},
//行拖拽
rowDrop() {
const tbody = document.querySelector(".el-table__body-wrapper tbody");
const _this = this;
Sortable.create(tbody, {
onEnd({ newIndex, oldIndex }) {
const currRow = _this.customColumnList.splice(oldIndex, 1)[0];
_this.customColumnList.splice(newIndex, 0, currRow);
console.log(_this.customColumnList);
},
});
console.log(_this.customColumnList);
},
//列拖拽
// columnDrop() {
// const wrapperTr = document.querySelector(".el-table__header-wrapper tr");
// console.log("wrapperTr:", wrapperTr);
// this.sortable = Sortable.create(wrapperTr, {
// animation: 180,
// delay: 0,
// handle: ".move", // 只有带move类名的元素才能拖动,多选框禁止拖动
// onEnd: (evt) => {
// // 因为手动加了一个多选框, 不在表头循环数组内, 所以这里减1
// let oldIndx = evt.oldIndex - 1;
// let newIndx = evt.newIndex - 1;
// const oldItem = this.dropCol[oldIndx];
// // 真正改变列数据--变化列头,就能实现列拖动 列数据按列头索引取值 {{ scope.row[dropCol[index].prop] }}
// this.dropCol.splice(oldIndx, 1); // 删除旧一行 删除为1
// this.dropCol.splice(newIndx, 0, oldItem); // 插入新一行 插入为0
// },
// });
// },
},
};
</script>
<style scoped>
.right-box {
display: flex;
justify-content: center;
align-items: center;
}
</style>
<style>
/* 取消单元格的列的border */
.el-table--border .el-table__cell {
border: none;
}
.el-table--border,
.el-table--group {
border: none;
}
/* 去掉表格单元格边框 */
/* 头部边框设置 */
/* 表格最外边框 */
.el-table--border, .el-table--group {
border: none;
}
.customer-table thead tr th.is-leaf{
border: 1px solid #EBEEF5;
border-right: none;
}
.customer-table thead tr th:nth-last-of-type(2){
border-right: 1px solid #EBEEF5;
}
</style>
我正在使用i18n从头开始构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在rubyonrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi
我想向我的Controller传递一个参数,它是一个简单的复选框,但我不知道如何在模型的form_for中引入它,这是我的观点:{:id=>'go_finance'}do|f|%>Transferirde:para:Entrada:"input",:placeholder=>"Quantofoiganho?"%>Saída:"output",:placeholder=>"Quantofoigasto?"%>Nota:我想做一个额外的复选框,但我该怎么做,模型中没有一个对象,而是一个要检查的对象,以便在Controller中创建一个ifelse,如果没有检查,请帮助我,非常感谢,谢谢
我正在使用RubyonRails3.0.9,我想生成一个传递一些自定义参数的link_toURL。也就是说,有一个articles_path(www.my_web_site_name.com/articles)我想生成如下内容:link_to'Samplelinktitle',...#HereIshouldimplementthecode#=>'http://www.my_web_site_name.com/articles?param1=value1¶m2=value2&...我如何编写link_to语句“alàRubyonRailsWay”以实现该目的?如果我想通过传递一些
有这些railscast。http://railscasts.com/episodes/218-making-generators-in-rails-3有了这个,你就会知道如何创建样式表和脚手架生成器。http://railscasts.com/episodes/216-generators-in-rails-3通过这个,您可以了解如何添加一些文件来修改脚手架View。我想把两者结合起来。我想创建一个生成器,它也可以创建脚手架View。有点像RyanBates漂亮的生成器或web_app_themegem(https://github.com/pilu/web-app-theme)。我
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。问题1)我想知道rubyonrails是否有功能类似于primefaces的gem。我问的原因是如果您使用primefaces(http://www.primefaces.org/showcase-labs/ui/home.jsf),开发人员无需担心javascript或jquery的东西。据我所知,JSF是一个规范,基于规范的各种可用实现,prim
我正在尝试用Prawn生成PDF。在我的PDF模板中,我有带单元格的表格。在其中一个单元格中,我有一个电子邮件地址:cell_email=pdf.make_cell(:content=>booking.user_email,:border_width=>0)我想让电子邮件链接到“mailto”链接。我知道我可以这样链接:pdf.formatted_text([{:text=>booking.user_email,:link=>"mailto:#{booking.user_email}"}])但是将这两行组合起来(将格式化文本作为内容)不起作用:cell_email=pdf.make_c
是否有简单的方法来更改默认ISO格式(yyyy-mm-dd)的ActiveAdmin日期过滤器显示格式? 最佳答案 您可以像这样为日期选择器提供额外的选项,而不是覆盖js:=f.input:my_date,as::datepicker,datepicker_options:{dateFormat:"mm/dd/yy"} 关于ruby-on-rails-事件管理员日期过滤器日期格式自定义,我们在StackOverflow上找到一个类似的问题: https://s
我们目前正在为ROR3.2开发自定义cms引擎。在这个过程中,我们希望成为我们的rails应用程序中的一等公民的几个类类型起源,这意味着它们应该驻留在应用程序的app文件夹下,它是插件。目前我们有以下类型:数据源数据类型查看我在app文件夹下创建了多个目录来保存这些:应用/数据源应用/数据类型应用/View更多类型将随之而来,我有点担心应用程序文件夹被这么多目录污染。因此,我想将它们移动到一个子目录/模块中,该子目录/模块包含cms定义的所有类型。所有类都应位于MyCms命名空间内,目录布局应如下所示:应用程序/my_cms/data_source应用程序/my_cms/data_ty
如何使此根路径转到:“/dashboard”而不仅仅是http://example.com?root:to=>'dashboard#index',:constraints=>lambda{|req|!req.session[:user_id].blank?} 最佳答案 您可以通过以下方式实现:root:to=>redirect('/dashboard')match'/dashboard',:to=>"dashboard#index",:constraints=>lambda{|req|!req.session[:user_id].b
Heroku支持人员告诉我,为了在我的Web应用程序中使用自定义字体(未安装在系统中,您可以在bash控制台中使用fc-list查看已安装的字体)我必须部署一个包含所有字体的.fonts文件夹里面的字体。问题是我不知道该怎么做。我的意思是,我不知道文件名是否必须遵循heroku的任何特殊模式,或者我必须在我的代码中做一些事情来考虑这种字体,或者如果我将它包含在文件夹中它是自动的......事实是,我尝试以不同的方式更改字体的文件名,但根本没有使用该字体。为了提供更多详细信息,我们使用字体的过程是将PDF转换为图像,更具体地说,使用rghostgem。并且最终图像根本不使用自定义字体。在