Commit 3fa4c3a0 authored by tangfh's avatar tangfh

封装 f-add-image-grid 插件(图片选择),并上传插件市场;修改图片路径

parent c2fa0fa3
...@@ -22,12 +22,12 @@ const statusViewUI = { ...@@ -22,12 +22,12 @@ const statusViewUI = {
}, },
empty: { empty: {
value: "empty", value: "empty",
src: "/static/icon-empty.png", src: "/static/f/icon-empty.png",
text: "暂无内容", text: "暂无内容",
}, },
error: { error: {
value: "error", value: "error",
src: "/static/icon-error.png", src: "/static/f/icon-error.png",
text: "服务器开小差,请稍候再试", text: "服务器开小差,请稍候再试",
}, },
} }
......
<template>
<view>
<f-pop position="bottom" :isShow="isShow" :title="title" @dismiss="onDismiss" @onEnsureClick="confirm()">
<template v-slot:bottom>
<view class="picker-con" :style="{background: pickerBg}">
<picker-view class="picker-view" :indicator-style='indicatorStyle' :mask-style='maskStyle'
:value="pickerVal" indicator-class="ir-datetime-picker" mask-class='ir-datetime-picker-mask'
@change="bindChange" @touchmove="touchmove" @touchend="touchend">
<picker-view-column v-if="mode == 'datetime' || mode == 'date'">
<view class="item" v-for="(item,index) in years"
:style="[{color: index === pickerVal[0] ? activeColor : pickerColor}, itemStyle]"
:key="index">
{{item}}
</view>
</picker-view-column>
<picker-view-column v-if="mode == 'datetime' || mode == 'date'">
<view class="item" v-for="(item,index) in months"
:style="[{color: index === pickerVal[1] ? activeColor : pickerColor}, itemStyle]"
:key="index">
{{item}}
</view>
</picker-view-column>
<picker-view-column v-if="mode == 'datetime' || mode == 'date'">
<view class="item" v-for="(item,index) in days" :key="index"
:style="[{color: index === pickerVal[2] ? activeColor : pickerColor}, itemStyle]">
{{item}}
</view>
</picker-view-column>
<picker-view-column v-if="mode == 'datetime' || mode == 'time'">
<view class="item" v-for="(item,index) in hours" :key="index"
:style="[{color: index === pickerVal[3] ? activeColor : pickerColor}, itemStyle]">
{{item}}
</view>
</picker-view-column>
<picker-view-column v-if="mode == 'datetime' || mode == 'time'">
<view class="item" v-for="(item,index) in minutes" :key="index"
:style="[{color: index === pickerVal[4] ? activeColor : pickerColor}, itemStyle]">
{{item}}
</view>
</picker-view-column>
</picker-view>
<view v-if="showCover" class="cover"></view>
</view>
</template>
</f-pop>
</view>
</template>
<script>
export default {
name: "f-pop-date-time-picker",
/*
参数说明
参数名 类型 默认值 说明
isShow Boolean 显示/隐藏
title String 标题
mode String date 模式 datetime、date、time
start String '2010/01/01 00:00' 开始时间,可以使用日期的字符串(String)、时间戳(Number)、new Date()
end String '2050/12/31 23:59' 结束时间,可以使用日期的字符串(String)、时间戳(Number)、new Date()
value String - 当前选中项(默认为当前时间),可以使用日期的字符串(String)、时间戳(Number)、new Date(),支持.sync
disabled Boolean false 禁用
type String 'border' 选择器样式,可选border、border-bottom和none
height String '66rpx' 日期高度
fontSize String '' 日期字体大小
color String '#333' 日期颜色
textAlign String 'left' 日期文字位置,同原生text-align
borderColor String '#ddd' 选择器有border时,border颜色
placeholder String '请选择日期时间' placeholder内容
placeholderColor String '#999' placeholder颜色
pickerBg String '#fff' 选择器背景颜色
maskStyle String '' 原生属性,设置选择器蒙层的样式
indicatorStyle String 'height: 50px;' 原生属性,设置选择器中间选中框的样式
pickerColor String '' picker文字颜色
activeColor String '' picker选中项颜色
returnType String 'string' 返回值类型,支持string(“YYYY-MM-DD hh:mm”)、timestamp 、date
@change EventHandle - 返回当前选择时间,格式为"YYYY-MM-DD hh:mm"
*/
props: {
isShow: {
type: Boolean,
default: false,
},
title: {
type: String,
default: '选择日期'
},
mode: {
type: String,
defaut: "date"
},
start: {
type: [String, Number],
default: '2010/01/01 00:00'
},
end: {
type: [String, Number],
default: '2050/12/31 23:59'
},
value: {
type: [String, Number],
default: ''
},
disabled: {
type: Boolean,
default: false
},
type: {
type: String,
default: 'border'
},
height: {
type: String,
default: '66rpx'
},
fontSize: {
type: String,
default: ''
},
color: {
type: String,
default: '#333'
},
textAlign: {
type: String,
default: 'left',
},
borderColor: {
type: String,
default: '#ddd'
},
pickerBg: {
type: String,
default: '#fff',
},
maskStyle: {
type: String,
default: ''
},
indicatorStyle: {
type: String,
default: 'height: 50px;'
},
pickerColor: {
type: String,
default: ''
},
activeColor: {
type: String,
default: '',
},
returnType: {
type: String,
default: 'string',
}
},
data() {
const baseArr = ['', '']
return {
date: '',
years: baseArr,
months: baseArr,
days: baseArr,
hours: baseArr,
minutes: baseArr,
days28: [],
pickerVal: [],
itemStyle: null,
startObj: {
months: [],
days: []
},
endObj: {
months: [],
days: []
},
changeDisabled: false,
moveFlag: false,
showCover: false,
hasChange: false
}
},
watch: {
start() {
this.setStartEnd()
const date = this.value ? this.value : new Date()
this.initCurr(date)
},
end() {
this.setStartEnd()
const date = this.value ? this.value : new Date()
this.initCurr(date)
},
value(val) {
const date = val ? val : new Date()
this.initCurr(date)
const {
y,
m,
d,
h,
minu
} = this.trimDate(this.value)
const trimN = this.trimNum
this.date = `${y}-${trimN(m)}-${trimN(d)} ${trimN(h)}:${trimN(minu)}`
}
},
created() {
this.days28 = this.setArray(1, 28)
if (this.activeColor || this.pickerColor) {
this.itemStyle = {
height: '50px',
lineHeight: '50px'
}
}
this.setStartEnd()
if (this.value) {
const {
y,
m,
d,
h,
minu
} = this.trimDate(this.value)
const trimN = this.trimNum
this.date = `${y}-${trimN(m)}-${trimN(d)} ${trimN(h)}:${trimN(minu)}`
}
const date = this.value ? this.value : new Date()
this.initCurr(date)
},
methods: {
onDismiss() {
this.$emit("dismiss")
},
// 设置一个是否是touchmove的flag
touchmove() {
this.moveFlag = true
},
touchend() {
// touchend时,如果有move,则显示遮罩,以防多次滑动
if (this.moveFlag) {
this.showCover = true
this.moveFlag = false
}
// move没有触发change事件,则隐藏遮罩
setTimeout(_ => {
if (!this.hasChange) {
this.showCover = false
}
}, 200)
},
// 当滚动选择
bindChange: function(e) {
if (this.changeDisabled) return
this.changeDisabled = true
const prev = this.pickerVal
const val = e.detail.value
const y = this.years[val[0]] ? this.years[val[0]] : this.years[this.years.length - 1]
const m = this.months[val[1]] ? this.months[val[1]] : this.months[this.months.length - 1]
const d = this.days[val[2]] ? this.days[val[2]] : this.days[this.days.length - 1]
const h = this.hours[val[3]] >= 0 ? this.hours[val[3]] : this.hours[this.hours.length - 1]
const minu = this.minutes[val[4]] >= 0 ? this.minutes[val[4]] : this.minutes[this.minutes.length - 1]
const date = `${y}/${m}/${d} ${h}:${minu}`
if (prev[1] != val[1]) {
this.initCurr(date, m, d)
} else {
this.initCurr(date)
}
this.pickerVal = val
},
// 点击确定
confirm() {
const val = this.pickerVal
const trimN = this.trimNum
const d = `${this.years[val[0]]}-${trimN(this.months[val[1]])}-${trimN(this.days[val[2]])}`
const t = `${trimN(this.hours[val[3]])}:${trimN(this.minutes[val[4]])}`
const date = `${d} ${t}`
this.date = date
let rV = date
if (this.returnType === "timestamp") {
rV = new Date(date).getTime()
} else if (this.returnType === "date") {
rV = new Date(date)
} else {
rV = this.formatDateTime(new Date(date), this.returnType)
}
this.$emit('change', rV)
this.$emit('update:value', rV)
},
// 根据年月,设置日期(不同月份,日期不同)
setDays(year, month, start) {
let newDays = []
const monthReg = /^4|6|9|11$/
let days = this.days28
if (start) {
days = this.setArray(start, 28)
}
if (monthReg.test(month)) {
newDays = [...days, 29, 30]
} else if (month === 2) {
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
newDays = [...days, 29]
} else {
newDays = days
}
} else {
newDays = [...days, 29, 30, 31]
}
return newDays
},
// 设置最大最小月日时分
setStartEnd() {
const {
sy,
ey,
sm,
em,
sd,
ed,
sh,
eh,
sminu,
eminu
} = this.getSE()
this.years = this.setArray(sy, ey)
// 设置最大最小月
if (sy === ey) {
this.startObj.months = this.endObj.months = this.setArray(sm, em)
} else {
this.startObj.months = this.setArray(sm, 12)
this.endObj.months = this.setArray(1, em)
}
// 设置最大最小日
if (sy === ey && sm === em) {
this.startObj.days = this.endObj.days = this.setArray(sd, ed)
} else {
this.startObj.days = this.setDays(sy, sm, sd)
this.endObj.days = this.setArray(1, ed)
}
// 设置最大最小时
if (sy === ey && sm === em && sd === ed) {
this.startObj.hours = this.endObj.hours = this.setArray(sh, eh)
} else {
this.startObj.hours = this.setArray(sh, 23)
this.endObj.hours = this.setArray(0, eh)
}
// 设置最大最小分钟
if (sy === ey && sm === em && sd === ed && sh === eh) {
this.startObj.minutes = this.endObj.minutes = this.setArray(sminu, eminu)
} else {
this.startObj.minutes = this.setArray(sminu, 59)
this.endObj.minutes = this.setArray(0, eminu)
}
},
// 初始化选中项
initCurr(val, month, day) {
// console.log(val)
this.hasChange = true
const {
start,
end,
sy,
ey,
sm,
em,
sd,
ed,
sh,
eh,
sminu,
eminu
} = this.getSE()
const {
val: curr,
y: cy,
m: cm,
d: cd,
h: ch,
minu: cminu
} = this.trimDate(val, month, day)
let cyi = this.years.indexOf(cy)
let cmi = 0
let cdi = 0
let chi = 0
let cminui = 0
let endSIFlag = true // 是否在最后统一设置index
if (curr.getTime() >= end.getTime()) { // 值大于等于结束时间
// console.log(11)
this.months = this.endObj.months
this.days = this.endObj.days
this.hours = this.endObj.hours
this.minutes = this.endObj.minutes
cyi = this.years.length - 1
cmi = this.months.length - 1
cdi = this.days.length - 1
chi = this.hours.length - 1
cminui = this.minutes.length - 1
endSIFlag = false
} else if (curr.getTime() <= start.getTime()) { // 值小于等于开始时间
// console.log(22)
this.months = this.startObj.months
this.days = this.startObj.days
this.hours = this.startObj.hours
this.minutes = this.startObj.minutes
cyi = cmi = cdi = chi = cminui = 0
endSIFlag = false
} else if (cy === ey && cm === em && cd === ed && ch === eh) {
// 值与结束时间年/月/日/时相同
// console.log(222)
this.months = this.endObj.months
this.days = this.endObj.days
this.hours = this.endObj.hours
this.minutes = this.endObj.minutes
} else if (cy === ey && cm === em && cd === ed) {
// 值与结束时间年/月/日相同
// console.log(111)
this.months = this.endObj.months
this.days = this.endObj.days
this.hours = this.endObj.hours
// console.log(this.hours)
this.minutes = this.setArray(0, 59)
} else if (cy === ey && cm === em) { // 值与结束时间年、月相同
// console.log(33)
this.months = this.endObj.months
this.days = this.endObj.days
this.hours = this.setArray(0, 23)
this.minutes = this.setArray(0, 59)
} else if (cy === ey) { // 值与结束时间年份相同
// console.log(44)
this.months = this.endObj.months
this.days = this.setDays(cy, cm)
this.hours = this.setArray(0, 23)
this.minutes = this.setArray(0, 59)
} else if (cy === sy && cm === sm && cd === sd && ch === sh) {
// 值与开始时间年/月/日/时相同
// console.log(99)
this.months = this.startObj.months
this.days = this.startObj.days
this.hours = this.startObj.hours
this.minutes = this.startObj.minutes
} else if (cy === sy && cm === sm && cd === sd) {
// 值与开始时间年/月/日相同
// console.log(88)
this.months = this.startObj.months
this.days = this.startObj.days
this.hours = this.startObj.hours
this.minutes = this.setArray(0, 59)
} else if (cy === sy && cm === sm) { // 值与开始时间年、月相同
// console.log(55)
this.months = this.startObj.months
this.days = this.startObj.days
this.hours = this.setArray(0, 23)
this.minutes = this.setArray(0, 59)
} else if (cy === sy) { // 值与开始时间年份相同
// console.log(66)
this.months = this.startObj.months
this.days = this.setDays(cy, cm)
this.hours = this.setArray(0, 23)
this.minutes = this.setArray(0, 59)
} else { // 值与开始时间、结束时间不同年月
// console.log(77)
this.months = this.setArray(1, 12)
this.days = this.setDays(cy, cm)
this.hours = this.setArray(0, 23)
this.minutes = this.setArray(0, 59)
}
if (endSIFlag) {
const di = this.days.indexOf(cd)
cmi = this.months.indexOf(cm)
cdi = di === -1 ? this.days.length - 1 : di
chi = this.hours.indexOf(ch)
cminui = this.minutes.indexOf(cminu)
}
this.$nextTick(_ => {
this.pickerVal = [cyi, cmi, cdi, chi, cminui]
this.changeDisabled = false
this.showCover = false
this.hasChange = false
})
},
// 设置开始/结束时间相关变量
getSE() {
let s = this.start
let e = this.end
s = s ? s : '2010/01/01 00:00'
e = e ? e : '2050/12/31 23:59'
const {
val: start,
y: sy,
m: sm,
d: sd,
h: sh,
minu: sminu
} = this.trimDate(s)
const {
val: end,
y: ey,
m: em,
d: ed,
h: eh,
minu: eminu
} = this.trimDate(e)
return {
start,
sy,
sm,
sd,
sh,
sminu,
end,
ey,
em,
ed,
eh,
eminu
}
},
// 返回时间信息
trimDate(val, month, day) {
const reg = /^\d{4}-\d{1,2}-\d{1,2}( \d{1,2}:\d{1,2})?(:\d{1,2})?$/
if (typeof val === 'string' && reg.test(val)) {
val = val.replace(/-/g, '/')
}
const curr = new Date(val)
return {
val: curr,
y: curr.getFullYear(),
m: month ? month : curr.getMonth() + 1,
d: day ? day : curr.getDate(),
h: curr.getHours(),
minu: curr.getMinutes()
}
},
// 获取一个范围内的整数,返回数组
setArray(start, end) {
const arr = []
for (let i = start; i <= end; i++) {
arr.push(i)
}
return arr
},
// 将数字转换成两位
trimNum(num) {
num = num >= 10 ? num : `0${num}`
return num
},
formatDateTime(date, format) {
const o = {
"M+": date.getMonth() + 1, // 月份
"d+": date.getDate(), // 日
"h+": date.getHours() % 12 === 0 ? 12 : date.getHours() % 12, // 小时
"H+": date.getHours(), // 小时
"m+": date.getMinutes(), // 分
"s+": date.getSeconds(), // 秒
"q+": Math.floor((date.getMonth() + 3) / 3), // 季度
S: date.getMilliseconds(), // 毫秒
a: date.getHours() < 12 ? "上午" : "下午", // 上午/下午
A: date.getHours() < 12 ? "AM" : "PM", // AM/PM
};
if (/(y+)/.test(format)) {
format = format.replace(
RegExp.$1,
(date.getFullYear() + "").substr(4 - RegExp.$1.length)
);
}
for (let k in o) {
if (new RegExp("(" + k + ")").test(format)) {
format = format.replace(
RegExp.$1,
RegExp.$1.length === 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length)
);
}
}
return format;
}
}
}
</script>
<style scoped>
.date {
padding: 16rpx;
display: flex;
align-items: center;
box-sizing: border-box;
}
.border {
border: 1rpx solid;
border-radius: 6rpx;
}
.border-bottom {
border-bottom: 1rpx solid;
}
.calendar {
width: 30rpx;
height: 30rpx;
border: 1rpx solid;
border-radius: 4rpx;
margin-right: 16rpx;
margin-top: 6rpx;
position: relative;
}
.calendar .calendar-line {
width: 26rpx;
height: 4rpx;
position: absolute;
left: 2rpx;
top: 10rpx;
opacity: 0.6;
z-index: 1;
}
.picker-con {
width: auto;
overflow: hidden;
}
.flex {
display: flex;
flex-direction: row;
justify-content: space-between;
}
.picker-view {
width: auto;
height: 500rpx;
}
.picker-view .item {
line-height: 50px;
align-items: center;
justify-content: center;
text-align: center;
}
.cover {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
}
</style>
\ No newline at end of file
<template> <template>
<view class="content" :style="[style]"> <view class="content" :style="[style]">
<f-status-view v-if="statusViewUI.isShowStatusView" :status="statusViewUI.status" @tap="onStatusViewClick"></f-status-view> <f-status-view v-if="statusViewUI.isShowStatusView" :status="statusViewUI.status"
@tap="onStatusViewClick"></f-status-view>
<f-add-image-grid @choose="onImageChoose" @delete="onImageDelete"></f-add-image-grid>
<button @click="showPopTop">f-pop-top</button> <button @click="showPopTop">f-pop-top</button>
<button @click="showPopCenter">f-pop-center</button> <button @click="showPopCenter">f-pop-center</button>
<button @click="showPopBottom">f-pop-bottom</button> <button @click="showPopBottom">f-pop-bottom</button>
...@@ -69,7 +73,7 @@ ...@@ -69,7 +73,7 @@
marginRight: "32rpx", marginRight: "32rpx",
}, },
uiIcon: { uiIcon: {
value: "/static/icon-add.png", value: "/static/f/icon-add.png",
}, },
uiTxt: { uiTxt: {
value: "新增", value: "新增",
...@@ -112,6 +116,12 @@ ...@@ -112,6 +116,12 @@
this.cMultiText01UiInit() this.cMultiText01UiInit()
}, },
methods: { methods: {
onImageChoose(res) {
},
onImageDelete(res) {
},
showPopTop() { showPopTop() {
this.isShowPopTop = true this.isShowPopTop = true
}, },
...@@ -133,7 +143,7 @@ ...@@ -133,7 +143,7 @@
this.isShowPopDatetimePicker = false this.isShowPopDatetimePicker = false
}, },
onPopDatetimePickerChange(res) { onPopDatetimePickerChange(res) {
console.log('onPopDatetimePickerChange res: ',res); console.log('onPopDatetimePickerChange res: ', res);
this.onPopDatatimePickerDismiss() this.onPopDatatimePickerDismiss()
}, },
styleInit() { styleInit() {
...@@ -145,7 +155,7 @@ ...@@ -145,7 +155,7 @@
let ui = JSON.parse(JSON.stringify(constant.CONST.cMultiTextUI)); let ui = JSON.parse(JSON.stringify(constant.CONST.cMultiTextUI));
ui.prefix = '面积' ui.prefix = '面积'
ui.value = '56' ui.value = '56'
ui.iconRight = "/static/icon-dropdown.png" ui.iconRight = "/static/f/icon-dropdown.png"
ui.isShowIconRight = true ui.isShowIconRight = true
ui.clickActive = true ui.clickActive = true
this.cMultiText01Ui = ui this.cMultiText01Ui = ui
......
## 1.0.0(2024-05-30)
1.0.0
<template>
<view class="view-grid-pic flex-row" :style="{width: width}">
<view class="view-image-container" v-for="(item, index) in picsInner" :index="index" :key="index">
<image class="image-grid-pic" :src="item" mode="aspectFill" @click="onImageClick(index)">
</image>
<image class="image-delete" src="/static/f/icon-delete-image.png" @click="onDeleteImageBtnClick(index)"
:style="{opacity: edit ? 1 : 0}"></image>
</view>
<image :style="{'border': showBorder()}" class="image-add-pic-btn" src="/static/f/icon-add-image.png"
@click="onAddPicBtnClick" v-if="edit && picsInner.length < max"></image>
</view>
</template>
<script>
export default {
name: "f-add-image-grid",
data() {
return {
picsInner: []
};
},
props: {
max: {
type: Number,
default: 6
},
pics: {
type: Array,
default: []
},
edit: {
type: Boolean,
default: true
},
width: {
type: String,
default: "444rpx"
},
isBorder: {
type: Boolean,
default: true
}
},
created() {
},
methods: {
showBorder() {
if (!this.isBorder) {
return 'none';
}
},
onDeleteImageBtnClick(index) {
//this.$emit("delete", index);
this.picsInner = this.picsInner.filter((item)=> {
return this.picsInner[index] != item
})
this.$emit("delete", _this.picsInner)
},
onAddPicBtnClick() {
this.$emit("onAddPicBtnClick");
let _this = this;
uni.chooseImage({
count: this.count,
success(res) {
//console.log('chooseImage success res: ', res);
let tempFilePaths = res.tempFilePaths;
tempFilePaths.forEach((item, index) => {
_this.picsInner.push(item)
})
this.$emit("choose", _this.picsInner)
},
fail(res) {
console.log('chooseImage fail res: ', res);
},
complete(res) {
//.log('chooseImage complete res: ',res);
}
})
},
getPaths() {
let path = "";
let length = this.picsInner.length;
this.picsInner.forEach((item, index) => {
if (index == length - 1) {
path += item;
} else {
path += item + ",";
}
})
return path;
},
onImageClick(index) {
// let paths = this.getPaths();
// this.$emit("onImageClick", {
// index: index,
// paths: paths,
// })
uni.previewImage({
current: index,
urls: this.picsInner,
indicator: "number",
loop: true,
})
}
}
}
</script>
<style lang="scss">
.view-image-container {
display: flex;
margin-bottom: 2rpx;
position: relative;
}
.view-grid-pic {
width: 444rpx;
padding-bottom: 20rpx;
flex-wrap: wrap;
}
.image-grid-pic {
flex-shrink: 0;
display: flex;
width: 128rpx;
height: 128rpx;
margin-right: 16rpx;
margin-top: 16rpx;
// border: #ebebeb solid 1rpx;
border-radius: 24rpx;
}
.view-image-container::after {
border: none;
}
.image-add-pic-btn {
flex-shrink: 0;
margin-top: 16rpx;
width: 123rpx;
height: 123rpx;
padding: 4rpx;
border-radius: 24rpx;
}
.image-delete {
width: 32rpx;
height: 32rpx;
position: absolute;
top: 0rpx;
right: 0rpx;
}
</style>
\ No newline at end of file
{
"id": "f-add-image-grid",
"displayName": "f-add-image-grid",
"version": "1.0.0",
"description": "图片选择",
"keywords": [
"f-add-image-grid"
],
"repository": "http://git.guoguodz.com/tangfh/fashion-ui.git",
"engines": {
"HBuilderX": "^3.1.0"
},
"dcloudext": {
"type": "component-vue",
"sale": {
"regular": {
"price": "0.00"
},
"sourcecode": {
"price": "0.00"
}
},
"contact": {
"qq": ""
},
"declaration": {
"ads": "无",
"data": "插件不采集任何数据",
"permissions": "无"
},
"npmurl": ""
},
"uni_modules": {
"dependencies": [],
"encrypt": [],
"platforms": {
"cloud": {
"tcb": "y",
"aliyun": "y",
"alipay": "y"
},
"client": {
"Vue": {
"vue2": "y",
"vue3": "y"
},
"App": {
"app-vue": "u",
"app-nvue": "u",
"app-uvue": "u"
},
"H5-mobile": {
"Safari": "u",
"Android Browser": "u",
"微信浏览器(Android)": "u",
"QQ浏览器(Android)": "u"
},
"H5-pc": {
"Chrome": "u",
"IE": "u",
"Edge": "u",
"Firefox": "u",
"Safari": "u"
},
"小程序": {
"微信": "y",
"阿里": "u",
"百度": "u",
"字节跳动": "u",
"QQ": "u",
"钉钉": "u",
"快手": "u",
"飞书": "u",
"京东": "u"
},
"快应用": {
"华为": "u",
"联盟": "u"
}
}
}
}
}
\ No newline at end of file
# f-add-image-grid
\ No newline at end of file
## 1.0.2(2024-05-30)
1.0.2
## 1.0.1(2024-05-28) ## 1.0.1(2024-05-28)
1.0.1 1.0.1
## 1.0.0(2024-05-28) ## 1.0.0(2024-05-28)
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
</template> </template>
<script> <script>
const AVATAR_DEFAULT = "/static/ic_avatar_default.png" const AVATAR_DEFAULT = "/static/f/ic_avatar_default.png"
export default { export default {
name: "f-image-01", name: "f-image-01",
data() { data() {
......
{ {
"id": "f-image-01", "id": "f-image-01",
"displayName": "f-image-01", "displayName": "f-image-01",
"version": "1.0.1", "version": "1.0.2",
"description": "f-image-01", "description": "f-image-01",
"keywords": [ "keywords": [
"f-image-01" "f-image-01"
......
## 1.0.4(2024-05-30)
1.0.4
## 1.0.3(2024-05-29) ## 1.0.3(2024-05-29)
1.0.3 1.0.3
## 1.0.2(2024-05-29) ## 1.0.2(2024-05-29)
......
...@@ -116,7 +116,7 @@ ...@@ -116,7 +116,7 @@
}, },
closeIcon: { closeIcon: {
type: String, type: String,
default: "/static/icon-close.png" default: "/static/f/icon-close.png"
} }
}, },
mounted() { mounted() {
......
{ {
"id": "f-pop", "id": "f-pop",
"displayName": "f-pop", "displayName": "f-pop",
"version": "1.0.3", "version": "1.0.4",
"description": "f-pop 插件(底部弹出,中间弹出,顶部弹出)", "description": "f-pop 插件(底部弹出,中间弹出,顶部弹出)",
"keywords": [ "keywords": [
"f-pop" "f-pop"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment