Przeglądaj źródła

update 2023/2/15

docs_0727
lb 1 rok temu
rodzic
commit
beca018db6
1 zmienionych plików z 57 dodań i 21 usunięć
  1. +57
    -21
      src/components/DialogWithMenu.vue

+ 57
- 21
src/components/DialogWithMenu.vue Wyświetl plik

@@ -33,9 +33,7 @@
:headers="uploadHeaders"
:on-success="handleUploadSuccess"
>
<el-button plain type="primary" size="small" class="at-right-top" style="" @click="triggerUpload()">
<i class="el-icon-upload"></i> 上传
</el-button>
<el-button plain type="primary" size="small" class="at-right-top" style=""> <i class="el-icon-upload"></i> 上传 </el-button>
</el-upload>
</template>

@@ -150,19 +148,18 @@
<!-- 附件标签页 -->
<div v-if="dataForm.id && tab.key === 'attachment'" key="attachment">
<!-- 附件列表 -->
文件列表
<div class="">
<ul class="file-list">
<li v-for="(file, index) in fileList" :key="index">
<span class="file-name">{{ file.name }}</span>
<span class="file-operations">
<span class="file-icon preview" @click="handleFileClick('view')">
<span class="file-icon preview" @click="handleFileClick('view', file)">
<i class="el-icon-view" style="cursor: pointer"></i>
</span>
<span class="file-icon download" @click="handleFileClick('download')">
<span class="file-icon download" @click="handleFileClick('download', file)">
<i class="el-icon-download" style="color: #0b58ff; cursor: pointer"></i>
</span>
<span class="file-icon delete" @click="handleFileClick('delete')">
<span class="file-icon delete" @click="handleFileClick('delete', file)">
<i class="el-icon-delete" style="color: red; cursor: pointer"></i>
</span>
</span>
@@ -387,7 +384,12 @@ export default {
() => {
Object.keys(this.dataForm).forEach((key) => {
if (excludeId && key === "id") return;
this.dataForm[key] = null;
if ("files" in this.dataForm) this.dataForm.files = [];
if ("fileIds" in this.dataForm) this.dataForm.fileIds = [];
else this.dataForm[key] = null;
if (Array.isArray(this.fileList)) {
this.fileList = [];
}
});
this.activeMenu = this.configs.menu[0].name;
this.$refs.dataForm[0].clearValidate();
@@ -441,19 +443,38 @@ export default {
},

/** handlers */
handleFileClick(type) {
handleFileClick(type, file) {
switch (type) {
case "view":
break;
case "download": {
/** 通知 */
this.$notify({
title: "成功",
message: "开始下载",
type: "success",
});
break;
}
case "delete": {
console.log("deleting", file);
const { id } = file;
this.fileList = this.fileList.filter((f) => f.id !== id);
this.updateRemoteFiles().then((res) => {
/** 通知 */
this.$notify({
title: "成功",
message: "已删除",
type: "success",
});
});
break;
}
}
},

handleUploadSuccess(response, file, fileList) {
console.log("[DialogWithMenu] uploadedFileList", response, file, fileList, this.uploadedFileList);
console.log("[DialogWithMenu] uploadedFileList", response, file, fileList);

if (response.code === 0) {
const uploadedFile = response.data[0];
@@ -464,6 +485,7 @@ export default {
typeCode: file.typeCode,
};

this.fileList.push(fileItem);
/** 通知 */
this.$notify({
title: "成功",
@@ -471,15 +493,23 @@ export default {
type: "success",
});

this.fileList.push(fileItem);
// this.uploadedFileList.push(fileItem);
// this.$emit("update-file-list", this.uploadedFileList);
this.updateFileList(this.fileList)
this.updateRemoteFiles();
}
},
updateFileList(list) {
// this.$http.put()

updateRemoteFiles() {
return this.$http
.put("/pms/product", {
id: "id" in this.dataForm ? this.dataForm.id : "DEFAULT_ID",
// code: "code" in this.dataForm ? this.dataForm.code : "DEFAULT_CODE",
// ...this.dataForm,
fileIds: this.fileList.map((f) => f.id),
})
.then(({ data: res }) => {
console.log("updateFileList", this.fileList, res);
});
},

handleComponentModelUpdate(propName, { subject, payload: { data } }) {
this.dataForm[propName] = JSON.stringify(data);
console.log("[DialogJustForm] handleComponentModelUpdate", this.dataForm[propName]);
@@ -692,8 +722,8 @@ export default {
z-index: 10000;
}

ul,
li {
ul.file-list,
ul.file-list > li {
padding: 0;
margin: 0;
list-style: none;
@@ -703,18 +733,24 @@ li {
max-height: 20vh;
overflow-y: auto;
margin-top: 12px;
width: 240px;
/* width: 240px; */
display: flex;
flex-direction: column;
background-color: #ccc;
}

.file-list > li {
ul.file-list > li {
border-radius: 4px;
background-color: #edededd2;
padding: 8px;
margin-bottom: 2px;
display: flex;
justify-content: space-between;
}

ul.file-list > li:hover {
background-color: #ededed;
}

.file-operations {
display: flex;
}


Ładowanie…
Anuluj
Zapisz