Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
E
exhibition_backstage
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
龙菲
exhibition_backstage
Commits
7544de0e
提交
7544de0e
authored
7月 01, 2022
作者:
龙菲
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
布展单元接口修改后的调整
上级
6c6b79d9
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
248 行增加
和
181 行删除
+248
-181
museum.js
src/api/museum.js
+8
-0
org.js
src/store/modules/org.js
+2
-2
upload.js
src/utils/upload.js
+12
-7
ExhibitionUnit.vue
src/views/display/components/ExhibitionUnit.vue
+30
-18
InfoEditDialog.vue
src/views/display/components/InfoEditDialog.vue
+170
-148
index.vue
src/views/museum/index.vue
+26
-6
没有找到文件。
src/api/museum.js
浏览文件 @
7544de0e
...
...
@@ -7,6 +7,14 @@ export function getMuseumTree(params) {
params
})
}
export
function
getMuseumTreeV1
(
params
)
{
return
request
({
url
:
'/sys/dept/v1/tree'
,
method
:
'get'
,
params
})
}
export
function
addMuseum
(
data
)
{
return
request
({
url
:
'/sys/dept'
,
...
...
src/store/modules/org.js
浏览文件 @
7544de0e
import
{
getMuseumTree
,
getMuseumTree
V1
,
}
from
'@/api/museum'
const
getDefaultState
=
()
=>
{
...
...
@@ -29,7 +29,7 @@ const actions = {
})
}
else
{
return
new
Promise
((
resolve
,
reject
)
=>
{
getMuseumTree
({
getMuseumTree
V1
({
deptId
}).
then
(
response
=>
{
const
{
...
...
src/utils/upload.js
浏览文件 @
7544de0e
...
...
@@ -9,7 +9,12 @@ var uploadUrl =
"/api/sysFiles/upload"
:
process
.
env
.
NODE_ENV
+
"/sysFiles/upload"
var
uploadV1Url
=
process
.
env
.
NODE_ENV
===
"test"
||
process
.
env
.
NODE_ENV
===
"development"
?
"/api/sysFiles/v1/upload"
:
process
.
env
.
NODE_ENV
+
"/sysFiles/v1/upload"
/**
* 封装上传文件的post方法
* @param data
...
...
@@ -30,21 +35,21 @@ export function upload(data) {
})
}
/**
* 封装文件上传的put方法
* @param url
* 封装上传文件方法 支持自定义Formdata 的key
* @param data
* @returns {Promise}
*/
export
function
upload
Put
(
url
,
data
)
{
export
function
upload
V1
(
data
)
{
return
new
Promise
((
resolve
,
reject
)
=>
{
axios
.
p
ut
(
u
rl
,
data
,
{
axios
.
p
ost
(
uploadV1U
rl
,
data
,
{
headers
:
{
'Content-Type'
:
'multipart/form-data
'
,
'Content-Type'
:
'multipart/form-data
;boundary = '
+
new
Date
().
getTime
()
,
'authorization'
:
getToken
(),
}
}).
then
(
response
=>
{
resolve
(
response
)
resolve
(
response
.
data
)
}).
catch
(
error
=>
{
reject
(
error
)
})
...
...
src/views/display/components/ExhibitionUnit.vue
浏览文件 @
7544de0e
...
...
@@ -78,12 +78,11 @@
<div>
单元图片:
</div>
<ManualUploader
:files=
"data.imagesVo"
v-model=
"data.imagesVo"
:fileLimit=
"6"
:fileSize=
"50"
:fileType=
"['jpeg', 'jpg', 'png']"
listType=
"picture-card"
ref=
"images
"
:ref=
"'unit-images-' + data.id
"
/>
</el-col>
</el-collapse-transition>
...
...
@@ -97,7 +96,7 @@
:fileSize=
"50"
:fileType=
"['mp4']"
listType=
"picture-card"
ref=
"videos
"
:ref=
"'unit-videos-' + data.id
"
/>
</el-col>
</el-collapse-transition>
...
...
@@ -108,6 +107,7 @@
</
template
>
<
script
>
let
id
=
1000
;
import
ManualUploader
from
"@/components/Uploader/ManualUploader.vue"
;
export
default
{
components
:
{
...
...
@@ -123,18 +123,31 @@ export default {
exhibitionUnits
:
{
handler
:
function
(
value
)
{
if
(
value
)
{
let
treeData
=
[...
this
.
exhibitionUnits
];
let
treeData
=
[...
value
];
treeData
.
map
((
item
)
=>
{
if
(
item
.
imagesVo
&&
item
.
imagesVo
.
length
>
0
)
{
}
else
{
if
(
!
item
.
imagesVo
||
!
item
.
imagesVo
>
0
)
{
item
.
imagesVo
=
[];
}
if
(
item
.
videosVo
&&
item
.
videosVo
.
length
>
0
)
{
}
else
{
if
(
!
item
.
videosVo
||
!
item
.
videosVo
>
0
)
{
item
.
videosVo
=
[];
}
});
// changeMediaData(treeData);
// function changeMediaData(arr) {
// if (arr.length > 0) {
// arr.map((item) => {
// if (!item.imagesVo || !item.imagesVo > 0) {
// item.imagesVo = [];
// }
// if (!item.videosVo || !item.videosVo > 0) {
// item.videosVo = [];
// }
// changeMediaData(item.children);
// });
// }
// }
this
.
treeData
=
treeData
;
}
},
...
...
@@ -148,13 +161,15 @@ export default {
},
mounted
()
{},
methods
:
{
getData
()
{
console
.
log
(
"this.treeData"
,
this
.
treeData
);
return
this
.
treeData
;
},
// getData() {
// console.log("this.treeData", this.treeData);
// debugger
// return this.treeData;
// },
append
(
data
)
{
// debugger;
const
newChild
=
{
id
:
id
++
,
unit
:
""
,
title
:
""
,
intro
:
""
,
...
...
@@ -166,10 +181,10 @@ export default {
// videosVo: [],
children
:
[],
};
if
(
!
data
.
children
)
{
if
(
!
data
.
children
)
{
this
.
$set
(
data
,
"children"
,
[]);
}
data
.
children
.
push
(
newChild
);
data
.
children
.
push
(
newChild
);
},
remove
(
node
,
data
)
{
const
parent
=
node
.
parent
;
...
...
@@ -180,9 +195,6 @@ export default {
handleAddUnitImage
(
node
,
data
)
{
this
.
$set
(
data
,
"showImageUploader"
,
!
data
.
showImageUploader
);
// debugger
console
.
log
(
"node"
,
node
);
console
.
log
(
"data"
,
data
);
},
handleAddUnitVideo
(
node
,
data
)
{
this
.
$set
(
data
,
"showVideoUploader"
,
!
data
.
showVideoUploader
);
...
...
src/views/display/components/InfoEditDialog.vue
浏览文件 @
7544de0e
...
...
@@ -212,7 +212,7 @@ import { addDisplay, editDisplay } from "@/api/display";
import
{
mapGetters
}
from
"vuex"
;
import
ManualUploader
from
"@/components/Uploader/ManualUploader.vue"
;
import
ExhibitionUnit
from
"./ExhibitionUnit.vue"
;
import
{
upload
}
from
'@/utils/upload'
import
{
upload
,
uploadV1
}
from
"@/utils/upload"
;
export
default
{
name
:
"InfoEditDialog"
,
components
:
{
...
...
@@ -313,6 +313,7 @@ export default {
literatureModelValue
:
[],
//文献绑定的数组,编辑回显时需要将后台传的值转成[id1,id2,]并赋值给它,新增时记得清空,提交时改成id 的str
exhibitionUnits
:
[
{
id
:
1
,
//后期去掉
// unit: "", //单元名称,如前言、第一单元,暂时忽略
title
:
""
,
//单元标题,类似主题名称
intro
:
""
,
//单元介绍
...
...
@@ -325,11 +326,6 @@ export default {
],
};
},
async
created
()
{
setTimeout
(()
=>
{
console
.
log
(
"22222this.dict"
,
this
.
dict
);
});
},
methods
:
{
// 关联文献查询
searchLiterature
(
queryString
)
{
...
...
@@ -369,8 +365,8 @@ export default {
async
handleSubmit
()
{
// debugger
// return;
var
that
=
this
const
mediaArr
=
[
"faceImage"
,
"images"
,
"videos"
,
"audios"
];
var
that
=
this
;
if
(
that
.
dialogForm
.
exhibitionId
)
{
// 修改
let
ps
=
[];
//ps为涵盖5种媒体的promise集合
...
...
@@ -404,158 +400,184 @@ export default {
);
}
else
{
//新增
let
ps
=
[];
// debugger;
let
formData
=
new
FormData
();
const
mediaArr
=
[
"faceImage"
,
"images"
,
"videos"
,
"audios"
];
mediaArr
.
map
((
media
)
=>
{
// console.log("media", media);
// console.log("this.$refs[media]", this.$refs[media]);
// return
let
files
=
that
.
$refs
[
media
].
getFiles
();
let
fileList
=
[...
files
];
if
(
fileList
.
length
>
0
)
{
let
formData
=
new
FormData
();
fileList
.
forEach
((
file
)
=>
{
formData
.
append
(
"files"
,
file
.
raw
);
});
ps
.
push
(
upload
(
formData
));
}
else
{
ps
.
push
(
null
);
}
let
files
=
[...
this
.
$refs
[
media
].
getFiles
()];
files
.
map
((
f
)
=>
{
formData
.
append
(
media
,
f
.
raw
);
});
});
// console.log(" this.exhibitionUnits", this.exhibitionUnits);
Promise
.
all
(
ps
).
then
(
async
(
allResult
)
=>
{
allResult
.
forEach
((
item
,
index
)
=>
{
if
(
item
)
{
let
fileIds
=
[];
let
files
=
item
.
data
;
files
.
forEach
((
file
)
=>
{
fileIds
.
push
(
file
.
fileId
);
});
that
.
dialogForm
[
mediaArr
[
index
]]
=
fileIds
.
join
(
","
);
}
else
{
that
.
dialogForm
[
mediaArr
[
index
]]
=
""
;
let
unitIds
=
[];
loopUnits
(
this
.
exhibitionUnits
);
function
loopUnits
(
arr
)
{
if
(
arr
.
length
>
0
)
{
arr
.
map
((
item
)
=>
{
unitIds
.
push
(
item
.
id
);
if
(
item
.
children
)
{
loopUnits
(
item
.
children
);
}
});
// let unitData = that.$refs["exhibitionUnits"].getData();
// debugger
// 遍历后上传图片和视频,并修改images和videos
// 单元信息处理
// function getUnitMediaStr(arr) {
// arr.forEach((unit) => {
// let unitPs = [];
// if (unit.imagesVo.length > 0) {
// unitPs.push(that.handleProcessUnitMedia(unit.imagesVo));
// } else {
// unitPs.push(null);
// }
// if (unit.videosVo.length > 0) {
// unitPs.push(that.handleProcessUnitMedia(unit.videosVo));
// } else {
// unitPs.push(null);
// }
// Promise.all(unitPs).then((res) => {
// // 图片的res
// console.log(`${arr}图片res`, res[0]);
// console.log(`${arr}图片视频`, res[1]);
// });
// if (unit.children) {
// getUnitMediaStr(unit.children);
// }
// });
// }
// getUnitMediaStr(unitData);
// unitData.forEach((unit) => {
// if (unit.imagesVo.length > 0) {
// unitPs.push(this.handleProcessUnitMedia(unit.imagesVo));
// } else {
// unitPs.push(null);
// }
// if (unit.videosVo.length > 0) {
// unitPs.push(this.handleProcessUnitMedia(unit.videosVo));
// } else {
// unitPs.push(null);
// }
}
}
// debugger;
// if (unit.children) {
// unit.children.forEach((item) => {
// let unitPs = [];
// if (item.imagesVo.length > 0) {
// unitPs.push(this.handleProcessUnitMedia(item.imagesVo));
// } else {
// unitPs.push(null);
// }
unitIds
.
map
((
id
)
=>
{
console
.
log
(
this
.
$refs
[
"exhibitionUnits"
]);
let
exhibitionUnitsDom
=
this
.
$refs
.
exhibitionUnits
;
let
imageFiles
=
[
...
exhibitionUnitsDom
.
$refs
[
`unit-images-
${
id
}
`
].
getFiles
(),
];
let
videoFiles
=
[
...
exhibitionUnitsDom
.
$refs
[
`unit-videos-
${
id
}
`
].
getFiles
(),
];
// if (item.videosVo.length > 0) {
// unitPs.push(this.handleProcessUnitMedia(unit.videosVo));
// } else {
// unitPs.push(null);
// }
// });
// }
// });
// const { deptId, regionCode } = this.userInfo;
// const params = { ...this.dialogForm, deptId, regionCode };
// params.literature = this.literatureModelValue.join(",");
// params.status = this.dialogForm.status ? 1 : 0;
// let res = await addDisplay(params);
// if (res.code == 0) {
// this.$message.success("提交成功!");
// this.loading = false;
// this.literatureModelValue = [];
// this.$emit("handleClose");
// this.$emit("refresh");
// this.dialogForm = {};
// }
},
(
reason
)
=>
{
console
.
log
(
reason
);
if
(
imageFiles
.
length
>
0
)
{
imageFiles
.
forEach
((
imgFile
)
=>
{
formData
.
append
(
`unit-images-
${
id
}
`
,
imgFile
.
raw
);
});
}
);
}
},
// 处理编辑时图片、视频、音频、讲解词媒体资源的上传问题
handleProcessUnitMedia
(
mediaVo
)
{
return
new
Promise
((
resolve
,
reject
)
=>
{
if
(
mediaVo
.
length
>
0
)
{
let
fileIds
=
[]
;
let
formData
=
new
FormData
();
let
fileIdStr
=
""
;
mediaVo
.
map
((
file
)
=>
{
switch
(
file
.
status
)
{
case
"ready"
:
formData
.
append
(
"files"
,
file
.
raw
);
break
;
case
"success"
:
fileIds
.
push
(
file
.
fileId
);
break
;
if
(
videoFiles
.
length
>
0
)
{
videoFiles
.
forEach
((
videoFile
)
=>
{
formData
.
append
(
`unit-videos-
${
id
}
`
,
videoFile
.
raw
);
});
}
});
// 存放各个file的
let
filesObj
=
{}
;
debugger
uploadV1
(
formData
).
then
((
upLoadRes
)
=>
{
console
.
log
(
"upLoadRes"
,
upLoadRes
);
upLoadRes
.
data
.
map
((
resFile
)
=>
{
// 如果已经存在
if
(
filesObj
[
resFile
.
fileKey
])
{
filesObj
[
resFile
.
fileKey
]
=
[
resFile
.
fileId
];
}
else
{
filesObj
[
resFile
.
fileKey
].
push
(
resFile
.
fileId
)
;
}
});
if
(
formData
.
get
(
"files"
))
{
upload
(
formData
)
.
then
((
upRes
)
=>
{
if
(
upRes
.
code
==
0
)
{
// 拿到已存在的和上传过后的结果进行拼接,并赋值给images,不用管imagesVo,后台自行处理
const
{
data
}
=
upRes
;
data
.
map
((
item
)
=>
{
fileIds
.
push
(
item
.
fileId
);
});
fileIdStr
=
fileIds
.
join
(
","
);
resolve
(
fileIdStr
);
}
})
.
catch
((
err
)
=>
{
reject
(
err
);
});
}
else
{
fileIdStr
=
fileIds
.
join
(
","
);
resolve
(
fileIdStr
);
}
}
});
});
// mediaArr.forEach((media) => {
// this.dialogForm[media] = filesObj[media].join(",");
// });
// this.exhibitionUnits.forEach((unit) => {
// for (const key of filesObj) {
// // 如果是图片,且id为当前数据的id,就将改id的images改成idstr
// let type = key.split("-")[1];
// let id = key.split("-")[2];
// if (id === unit.id) {
// switch (type) {
// case "images":
// unit.images = filesObj[key].join(',')
// break;
// case "videos":
// unit.videos = filesObj[key].join(',')
// break;
// }
// }
// }
// });
// debugger
// mediaArr.map((media) => {
// let files = that.$refs[media].getFiles();
// let fileList = [...files];
// if (fileList.length > 0) {
// let formData = new FormData();
// fileList.forEach((file) => {
// formData.append(media, file.raw);
// });
// // ps.push(upload(formData));
// upload(formData).then(res=>{
// let upRes = res.data
// upRes.map(res=>{
// })
// })
// } else {
// // ps.push(null);
// }
// });
// Promise.all(ps).then(
// async (allResult) => {
// allResult.forEach((item, index) => {
// if (item) {
// let fileIds = [];
// let files = item.data;
// files.forEach((file) => {
// fileIds.push(file.fileId);
// });
// that.dialogForm[mediaArr[index]] = fileIds.join(",");
// } else {
// that.dialogForm[mediaArr[index]] = "";
// }
// });
// const { deptId, regionCode } = this.userInfo;
// const params = { ...this.dialogForm, deptId, regionCode };
// params.literature = this.literatureModelValue.join(",");
// params.status = this.dialogForm.status ? 1 : 0;
// let res = await addDisplay(params);
// if (res.code == 0) {
// this.$message.success("提交成功!");
// this.loading = false;
// this.literatureModelValue = [];
// this.$emit("handleClose");
// this.$emit("refresh");
// this.dialogForm = {};
// }
// },
// (reason) => {
// console.log(reason);
// }
// );
}
},
// // 处理编辑时图片、视频、音频、讲解词媒体资源的上传问题
// handleProcessUnitMedia(mediaVo) {
// return new Promise((resolve, reject) => {
// if (mediaVo.length > 0) {
// let fileIds = [];
// let formData = new FormData();
// let fileIdStr = "";
// mediaVo.map((file) => {
// switch (file.status) {
// case "ready":
// formData.append("files", file.raw);
// break;
// case "success":
// fileIds.push(file.fileId);
// break;
// }
// });
// if (formData.get("files")) {
// upload(formData)
// .then((upRes) => {
// if (upRes.code == 0) {
// // 拿到已存在的和上传过后的结果进行拼接,并赋值给images,不用管imagesVo,后台自行处理
// const { data } = upRes;
// data.map((item) => {
// fileIds.push(item.fileId);
// });
// fileIdStr = fileIds.join(",");
// resolve(fileIdStr);
// }
// })
// .catch((err) => {
// reject(err);
// });
// } else {
// fileIdStr = fileIds.join(",");
// resolve(fileIdStr);
// }
// }
// });
// },
// 处理编辑时图片、视频、音频、讲解词媒体资源的上传问题
handleProcessMedia
(
media
)
{
return
new
Promise
(
async
(
resolve
,
reject
)
=>
{
...
...
src/views/museum/index.vue
浏览文件 @
7544de0e
...
...
@@ -18,25 +18,42 @@
:data="orgTreeData"
border
stripe
default-expand-all
>
<el-table-column
align=
"center"
prop=
"
label
"
prop=
"
name
"
label=
"名称"
></el-table-column>
<el-table-column
align=
"center"
prop=
"
pid
Name"
label=
"
所属部门
"
prop=
"
region
Name"
label=
"
归属地
"
></el-table-column>
<el-table-column
align=
"center"
prop=
"status"
label=
"状态"
>
<template
slot-scope=
"scope"
>
<el-popconfirm
:title=
"getStatusTitle(scope.row.status)"
@
confirm=
"handleChangeStatus(scope.row.status)"
>
<el-switch
slot=
"reference"
:value=
"scope.row.status"
></el-switch>
</el-popconfirm>
</
template
>
</el-table-column>
<el-table-column
align=
"center"
prop=
"longitude"
label=
"经度"
>
</el-table-column>
<el-table-column
align=
"center"
prop=
"latitude"
label=
"纬度"
>
</el-table-column>
<el-table-column
align=
"center"
prop=
"latitude"
label=
"纬度"
>
</el-table-column>
<el-table-column
align=
"center"
prop=
"intro"
label=
"简介"
/>
<el-table-column
align=
"center"
label=
"操作"
>
</el-table-column>
<el-table-column
align=
"center"
label=
"操作"
>
<
template
slot-scope=
"scope"
>
<el-button
type=
"primary"
size=
"mini"
icon=
"el-icon-edit"
>
编辑
</el-button>
<el-button
type=
"danger"
size=
"mini"
icon=
"el-icon-delete"
>
删除
</el-button>
</
template
>
</el-table-column>
</el-table>
<InfoEditDialog
:visible=
"drawerVisible"
...
...
@@ -118,6 +135,9 @@ export default {
this
.
dict
=
value
;
}
},
// orgTreeData(value) {
// console.log("123", value);
// },
},
computed
:
{
tableTitle
()
{
...
...
@@ -139,7 +159,7 @@ export default {
};
},
},
moun
ted
()
{
crea
ted
()
{
this
.
loadData
();
},
methods
:
{
...
...
@@ -166,7 +186,7 @@ export default {
// 加载表格数据
loadData
()
{
this
.
$store
.
dispatch
(
"org/getMuseumTreeData"
,
""
).
then
((
res
)
=>
{
this
.
orgTreeData
=
res
;
this
.
orgTreeData
=
res
});
},
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论