首页 技术 正文
技术 2022年11月12日
0 收藏 655 点赞 5,219 浏览 3776 个字

首先说一下遇到这种问题的解决思路吧,很简单先去https://element.eleme.cn/ 这个官网上找到对应的需求,然后就是拼接数据的问题。

以下是全选的例子:

<el-select class="fr" v-model="searchJobType" style="width: 185px; margin-right:8px;" size="mini" type="text" multiple collapse-tags @change="changeSelect" placeholder="请选择类型查询">
<el-option v-for="(type,ind) in typeList" :key=ind :label="type.label" :value="type.value"></el-option>
</el-select>var Main = {
data() {
return {
searchJobType: ['ALL_SELECT','TSINPUT', '01', '02', '03', '04', '05', '07', '08', '09', '11', '12'],
oldSearchJobType: [],
typeList: [
{value: 'ALL_SELECT', label: '全部'},
{value: 'TSINPUT', label: '时序数据采集任务'},
{value: '01', label: 'RDBMS → HIVE全量'},
{value: '02', label: 'RDBMS → HDFS全量'},
{value: '03', label: 'RDBMS → HBASE全量'},
{value: '04', label: 'HDFS → RDBMS'},
{value: '05', label: 'HIVE → RDBMS'},
{value: '07', label: 'RDBMS → HIVE增量'},
{value: '08', label: 'RDBMS → HBASE增量'},
{value: '09', label: '文件 → RDBMS'},
{value: '11', label: '数据对象 → 数据对象'},
{value: '12', label: 'FTP服务器 → 文件系统'},
]
}
},
methods:{
changeSelect(val) {
const allValues = [];
// 保留所有值
for (const item of this.typeList) {
allValues.push(item.value)
}
// 用来储存上一次的值,可以进行对比
const oldVal = this.oldSearchJobType.length === 1 ? this.oldSearchJobType[0] : [];
// 若是全部选择
if (val.includes('ALL_SELECT')) this.searchJobType = allValues;
// 取消全部选中 上次有 当前没有 表示取消全选
if (oldVal.includes('ALL_SELECT') && !val.includes('ALL_SELECT')) this.searchJobType = [];
// 点击非全部选中 需要排除全部选中 以及 当前点击的选项
// 新老数据都有全部选中
if (oldVal.includes('ALL_SELECT') && val.includes('ALL_SELECT')) {
const index = val.indexOf('ALL_SELECT');
val.splice(index, 1); // 排除全选选项
this.searchJobType = val
}
// 全选未选 但是其他选项全部选上 则全选选上 上次和当前 都没有全选
if (!oldVal.includes('ALL_SELECT') && !val.includes('ALL_SELECT')) {
if (val.length === allValues.length - 1) this.searchJobType = ['ALL_SELECT'].concat(val)
}
// 储存当前最后的结果 作为下次的老数据
this.oldSearchJobType[0] = this.searchJobType;
},
}
}
var Ctor = Vue.extend(Main)
new Ctor().$mount('#app')
原文链接:https://www.cnblogs.com/zhenggaowei/p/9828364.html

有时候还会遇到一种情况,有时候可能会根据某种条件导致不能选择某一个选项,就需要有禁用项。以下网站可参考的代码。

在el-option中,设定disabled值为 true,即可禁用该选项<template>
<el-select v-model="value" placeholder="请选择">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
:disabled="item.disabled">
</el-option>
</el-select>
</template><script>
export default {
data() {
return {
options: [{
value: '选项1',
label: '黄金糕'
}, {
value: '选项2',
label: '双皮奶',
disabled: true
}, {
value: '选项3',
label: '蚵仔煎'
}, {
value: '选项4',
label: '龙须面'
}, {
value: '选项5',
label: '北京烤鸭'
}],
value: ''
}
}
}
</script>

个人代码列子,我的工作需求是这样的。首先要选择分行进行工单推送,因为分行较多,所以很有可能这次推送了,下次再进行推送的又选中该分行了,这样就会造成该分行数据错乱问题,所以就需要有一个判断,已经推送的就显示为禁用项。

前台代码:

<el-select @change="changeBank()" v-model="bankIdList" multiple size="small" collapse-tags style="margin-left: 20px;"
placeholder="请选择分行(可多选)">
<el-option
v-for="item in options"
:key="item.id"
:label="item.name"
:value="item.id"
:disabled="item.disabled">
</el-option>
</el-select>

// 加载所有分行
loadAllBranch() {
console.log(1);
this.utils.post(this,'allBranchForVue.do',{orderId:this.wo_id},d=>{
console.log(d);
this.options = d;
});
},

后台代码:


   String orderId = request.getParameter("orderId");
List<WorkOrder> wList = null;
if(StringUtils.isNoneBlank(orderId)){
wList = workOrderService.getnameSXBybossID(orderId); //获取已经推送的分行信息
}

UserModel u = AuthUtil.getLoginUser(request);
//List<OrgModel> list = orgService.getAllBranch(u.getId());
List<OrgModel> list = orgService.getAllBranchForVue(); //获取所有分行
JSONArray json = new JSONArray();
for (OrgModel om: list) {
JSONObject jsonObject=new JSONObject();
jsonObject.put("id",om.getId());
jsonObject.put("name",om.getName());
jsonObject.put("nameSX",om.getNameSX());
jsonObject.put("parent",om.getParent());

//QCQ20190712 判断是否已推送 已推送变灰色不可选 此功能暂时屏蔽
/*if(!wList.isEmpty() && StringUtils.isNoneBlank(om.getNameSX())){
for (WorkOrder wo: wList) {
if(wo.getWorkOrderId().contains(om.getNameSX())){
jsonObject.put("name",om.getName() + " (已推送)");
jsonObject.put("disabled",true);
}
}
}*/
json.add(jsonObject);
}
try {
response.getWriter().write(json.toString()); // 将JSON数据返回页面
} catch (Exception e) {
e.printStackTrace();
}
 
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,946
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,472
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,285
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,101
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,733
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,768