Skip to content

Commit c8214d3

Browse files
committed
fix(upload-imgs): 修复当固定项时, 删除和排序的行为
1 parent d6964cb commit c8214d3

2 files changed

Lines changed: 35 additions & 10 deletions

File tree

src/components/base/upload-imgs/index.vue

Lines changed: 29 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
-->
3939

4040
<template>
41-
<div class="imgs-upload-container">
41+
<div class="imgs-upload-container" v-loading="loading">
4242
<template v-for="(item, i) in itemList">
4343
<template v-if="item.display">
4444
<div class="thumb-item" :key="item.id" :style="boxStyle">
@@ -48,13 +48,13 @@
4848
:fit="fit"
4949
style="width: 100%; height: 100%;"></el-image>
5050
<div class="control">
51-
<i class="el-icon-close del" @click.prevent.stop="delItem(item.id)" title="删除"></i>
52-
<div class="preview" title="更换图片" @click.prevent.stop="handleClick(item.id)">
51+
<i v-if="!disabled" class="el-icon-close del" @click.prevent.stop="delItem(item.id)" title="删除"></i>
52+
<div v-if="!disabled" class="preview" title="更换图片" @click.prevent.stop="handleClick(item.id)">
5353
<i class="el-icon-edit"></i>
5454
</div>
5555
<div class="control-bottom" v-if="sortable || preview">
5656
<i
57-
v-if="sortable"
57+
v-if="sortable && !disabled"
5858
title="前移"
5959
class="control-bottom-btn el-icon-back"
6060
:class="{disabled: (i === 0)}"
@@ -63,9 +63,10 @@
6363
v-if="preview"
6464
class="control-bottom-btn el-icon-view"
6565
title="预览"
66+
style="cursor: pointer;"
6667
@click.stop="previewImg(item)"></i>
6768
<i
68-
v-if="sortable"
69+
v-if="sortable && !disabled"
6970
title="后移"
7071
class="control-bottom-btn el-icon-right"
7172
:class="{disabled: (i === (itemList.length - 1))}"
@@ -387,25 +388,43 @@ export default {
387388
// 初始化 Draggable
388389
},
389390
methods: {
391+
getValue() {
392+
393+
},
394+
/**
395+
* 删除某项
396+
*/
390397
delItem(id) {
391-
const { itemList } = this
398+
const { itemList, isStable } = this
392399
// 根据id找到对应项
393400
const index = itemList.findIndex(item => (item.id === id))
394-
itemList.splice(index, 1)
401+
if (isStable) {
402+
// 固定数量图片, 删除后留下空项
403+
itemList[index] = createItem()
404+
this.itemList = [...itemList]
405+
} else {
406+
itemList.splice(index, 1)
407+
}
395408
},
409+
/**
410+
* 预览图像, 后续预览组件制作后替换
411+
*/
396412
previewImg(data) {
397413
this.$confirm(`<img src="${data.display}" style="width: 100%; height: 100%" />`, '预览', {
398414
dangerouslyUseHTMLString: true,
399415
})
400416
},
417+
/**
418+
* 移动图像位置
419+
*/
401420
move(id, step) {
402-
const { itemList } = this
421+
const { itemList, isStable } = this
403422
// 找到操作的元素
404423
const index = itemList.findIndex(item => (item.id === id))
405424
// 边界检测
406425
if ((index + step) < 0 || (index + step) >= itemList.length) return
407-
// 不可和最后一项输入换位子
408-
if ((index + step) === (itemList.length - 1)) {
426+
// 非固定项时, 不可和最后一项输入换位子
427+
if (!isStable && (index + step) === (itemList.length - 1)) {
409428
if (itemList[itemList.length - 1].status === 'input') return
410429
}
411430
const i = itemList[index]

src/plugins/ImgsUpload/views/Demo.vue

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@
1717
<el-form-item label="禁用">
1818
<upload-imgs :rules="rules2" :multiple="true" :disabled="true" />
1919
</el-form-item>
20+
<el-form-item label="禁用+初始化">
21+
<upload-imgs :rules="rules2" :multiple="true" :disabled="true" :value="initData" />
22+
</el-form-item>
23+
<el-form-item label="禁用+初始化+不预览">
24+
<upload-imgs :rules="rules2" :multiple="true" :disabled="true" :value="initData" :preview="false" />
25+
</el-form-item>
2026
<el-form-item label="排序+固定数量">
2127
<upload-imgs
2228
:rules="rules2"

0 commit comments

Comments
 (0)