记录开发中遇见的一些方法(因为记性不好 根本记不住 所以好记性不如烂笔头)
数组删掉指定字段
//数组删掉指定字段labelList
var equityList=[{equity: 0,labelList:[{code:'123'}],labelCodeList:['1','2']}]
const removeField = (array, field) => {
return array.map(item => {
const { [field]: removed, ...rest } = item;
return rest;
});
};
var equityListNew = removeField(equityList, 'labelList')
console.log('equityListNew ', equityListNew )
//[{equity: 0,labelList:['1','2']}]
数组数据是否重复
var codeListAll=["YD10010", "YD10011", "YD10015", "YD10014", "YD10011"]
var s = codeListAll.join(",")+",";
for(var i=0;i<codeListAll.length;i++) {
if(s.replace(codeListAll[i]+",","").indexOf(codeListAll[i]+",")>-1) {
alert("数组中有重复元素:" + codeListAll[i]);
break;
}
}
接口返回 data:image/png;base64格式数据 前端实现下载二维码功能
handleCode(row) {
const loading = this.$loading({
lock: true,
text: '正在下载,请稍候。。。',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
})
getWxCodeUnLimit({ id: row.id })//封装好的接口
.then(response => {
loading.close()
var data =response.data.data//接口返回的数据格式 二进制
var url ='data:image/png;base64,'+ data
let downloadFilename = row.propertyName + '二维码.png'
this.downloadFile(downloadFilename,url)
})
.catch(() => {
loading.close()
this.$notify.error({
title: '失败',
message: response.data.msg
})
})
},
downloadFile(fileName, content){
const aLink = document.createElement('a')
aLink.style.display = 'none'
aLink.href = content // base64Url就是你要下载的base64格式图片代码
aLink.download = fileName
// 模拟点击
document.body.appendChild(aLink)
aLink.click()
//移除节点
document.body.removeChild(aLink)
},
el-date-picker 时间选择器 限制时间选择范围
<el-form
:model="queryForm"
inline :rules="rules"
style="display: flex;justify-content: space-between;align-items: center;">
<el-form-item label="时间查询月" prop="value1">
<el-date-picker
class="pickerRange"
v-model="queryForm.value1"
value-format="yyyy-MM"
type="monthrange"
range-separator="至"
start-placeholder="开始月份"
end-placeholder="结束月份"
>
</el-date-picker>
</el-form-item>
<el-form-item label="时间查询日" prop="value2">
<el-date-picker
class="pickerRange"
v-model="queryForm.value2"
value-format="yyyy-MM-dd"
type="daterange"
range-separator="至"
start-placeholder="开始月份"
end-placeholder="结束月份"
>
</el-date-picker>
</el-form-item>
</el-form>
<script>
let moment = require("moment") // 引入 时间格式处理
export default {
data() {
var dateValidator = (rule, value, callback) => {
const dateType=rule.dateType||'days';
const num=rule.num||31
const dateString=rule.dateString||'天';
const message=rule.message||'时间跨度不得超过${num}${dateString}';
if(value&&value.length===2){
const start=value[0]
const end=value[1]
if(moment(end).diff(moment(start),dateType,true)>num){
callback(new Error(message))
return
}
}
callback()
}
return {
queryForm: { },
rules: {
value1: [
{ validator:dateValidator,dateType:'months',num:5, dateString:'月', message: '时间跨度不能大于6个月', }
],
value2: [
{ validator:dateValidator,dateType:'days',num:180, dateString:'日', message: '时间跨度不能大于180天', }
],
},
}
},
}
</script>