Commit 798f2bc5 authored by zhengke's avatar zhengke

云盘 优化

parent 71493e12
......@@ -4,11 +4,11 @@
<div class="row CloudDisk-L-inquire">
<el-input v-model="GName"
placeholder="搜索分组名称" @keyup.enter="querySearchGroup"
@change="SearchGroup">
@input="SearchGroup">
</el-input>
<el-button type="primary" @click="addEditGroup">添加</el-button>
</div>
<div class="CloudDisk-L-Center fz14">
<div class="CloudDisk-L-Center fz14" v-loading="deleteLoading">
<div class="CloudDisk-L-Title row flex-between cusor-pointer"
v-for="(item,index) in GroupList" :key="index" @click.stop="Search(item)"
:class="[queryObj.CloudGroupId==item.Id?'active':'']">
......@@ -24,7 +24,7 @@
<el-dropdown-item @click.stop="EditGroup(item)">
<el-button type="default" link :icon="Edit" size="small">重命名</el-button>
</el-dropdown-item>
<el-dropdown-item @click.stop="deleteGroup(item)">
<el-dropdown-item v-if="!item.IsCanDelete" @click.stop="deleteGroup(item)">
<el-button type="default" link :icon="Delete" size="small">删除分组</el-button>
</el-dropdown-item>
</el-dropdown-menu>
......@@ -32,8 +32,8 @@
</el-dropdown>
</template>
<div v-else></div>
<span>{{item.RecordNum?item.RecordNum:''}}
<template v-if="!item.RecordNum">&nbsp;</template>
<span v-if="item.RecordNum>0">{{item.RecordNum?item.RecordNum:''}}
<!-- <template v-if="!item.RecordNum">&nbsp;</template> -->
</span>
</div>
......@@ -43,7 +43,8 @@
<div class="CloudDisk-R grow">
<div class="row CloudDisk-R-inquire">
<el-input v-model="queryObj.FileName"
placeholder="请输入图片名称搜索" @keyup.enter="Search">
placeholder="请输入图片名称搜索" @keyup.enter="Search"
@input="SearchImg">
</el-input>
</div>
<div ref="imgDiskRef" style="height: 420px;padding-top: 20px;">
......@@ -63,7 +64,7 @@
<div class="CloudDisk-R-Box cursor-pointer"
:class="[ImgId==item.DetailsId?'active':'']" @click="setImg(item)">
<div class="CloudDisk-R-Img">
<el-image :src="item.FilePath" style="width: 80px; height: 80px"
<el-image :src="item.FilePath" style="width: 80px; height: 80px;"
fit="cover"/>
<!-- <el-image
style="width: 80px; height: 80px"
......@@ -80,7 +81,11 @@
<IconClose :size="10"></IconClose>
</span>
</div>
<span class="title block">{{item.FileName}}</span>
<span class="title block">
<el-tooltip effect="dark" :content="item.FileName" placement="top">
{{item.FileName}}
</el-tooltip>
</span>
</div>
</template>
......@@ -130,6 +135,7 @@ import { getImageDataURL } from '@/utils/image'
import AliyunUpload from '@/utils/upload/aliyun'
import { useUserStore } from "@/store";
import { storeToRefs } from 'pinia'
import { ApiResult } from "@/configs/axios";
const { token, userInfo } = storeToRefs(useUserStore())
......@@ -157,12 +163,15 @@ const loading = ref(false)
const GroupList = ref([] as any)
const setLoading = ref(false)
const deleteLoading = ref<any>(null)
const deleteLoading = ref(false)
const deleteImgLoading = ref<any>(null)
const props = defineProps({
active: '' as any,
show: false as Boolean
})
const GroupObj = ref({} as any)
const emit = defineEmits<{
(event: 'setImg'): void
}>()
......@@ -186,7 +195,7 @@ const insertImageElement = async (files: FileList) => {
let parms = {
isppt: '1',
uid: token.value,
gid: GroupId.value
gid: queryObj.CloudGroupId
}
let filePath="tripImg/";
console.log("ssss");
......@@ -199,8 +208,11 @@ const insertImageElement = async (files: FileList) => {
// 删除
const deleteImg = (item:any) => {
let text
if(item.IsCanDelete) text = '删除此图会影响模板正常使用,将无法恢复,是否确定?'
else text = '此操作将删除该图,是否确定?'
ElMessageBox.confirm(
`此操作将删除该图,是否确定?`,
`${text}`,
'提示',
{
confirmButtonText: '确定',
......@@ -209,16 +221,12 @@ const deleteImg = (item:any) => {
}
).then(async () => {
try {
deleteLoading.value = ElLoading.service({
lock:true,
text:'正在处理'
})
loading.value = true
let dataRes = await CloudDiskService.RemovePPTCloudInfo(item.DetailsId)
if (dataRes.data.resultCode == 1) {
if (dataRes.data.resultCode==ApiResult.SUCCESS) {
querySearchHandler()
}
deleteLoading.value.close()
deleteLoading.value = null
loading.value = false
} catch (error) {}
}).catch(() => {})
......@@ -237,7 +245,7 @@ const setGroup = async () =>{
})
setLoading.value = true
let pageRes = await CloudDiskService.SetPPTCloudGroup(addEditMsg);
if (pageRes.data.resultCode == 1) {
if (pageRes.data.resultCode==ApiResult.SUCCESS) {
dialogFormVisible.value = false
querySearchGroup()
}
......@@ -274,16 +282,12 @@ const deleteGroup = (item:any) => {
let queryMsg = {
TempId: item.TempId
}
deleteLoading.value = ElLoading.service({
lock:true,
text:'正在处理'
})
deleteLoading.value = true
let dataRes = await CloudDiskService.RemovePPTCloudGroup(item.Id)
if (dataRes.data.resultCode == 1) {
querySearchGroup()
}
deleteLoading.value.close()
deleteLoading.value = null
deleteLoading.value = false
} catch (error) {}
}).catch(() => {})
......@@ -295,27 +299,26 @@ const SearchGroup = () => {
const querySearchGroup = async () =>{
try {
let datasRes = await CloudDiskService.GetPPTCloudList(GName.value);
if (datasRes.data.resultCode == 1) {
GroupList.value = datasRes.data.data
let total = 0
console.log(datasRes.data.data.length)
for(let i=0;i<datasRes.data.data.length;i++){
total+=datasRes.data.data[i].RecordNum
}
if (datasRes.data.resultCode==ApiResult.SUCCESS) {
GroupList.value = datasRes.data.data.list
GroupList.value.unshift({
Id: '',
GName: '全部',
RecordNum: 0
RecordNum: datasRes.data.data.TotalNum
})
querySearchHandler()
}
} catch (error) {
}
}
const SearchImg = () =>{
if(queryObj.FileName=='') Search()
}
const Search = (item:any) =>{
if(item) queryObj.CloudGroupId = item.Id
if(item) {
queryObj.CloudGroupId = item.Id
GroupObj.value = item
}
queryObj.pageIndex = 1
querySearchHandler()
}
......@@ -325,7 +328,7 @@ const querySearchHandler = async () =>{
try {
if(queryObj.pageIndex == 1) dataList.value =[]
let pageRes = await CloudDiskService.GetPPTCloudInfoPage(queryObj);
if (pageRes.data.resultCode == 1) {
if (pageRes.data.resultCode==ApiResult.SUCCESS) {
let arrList = function(list){
list.forEach(x=>{
x.checked = false
......@@ -335,7 +338,6 @@ const querySearchHandler = async () =>{
dataList.value = pageRes.data.data.pageData //dataList.value.concat(pageRes.data.data.pageData);
queryObj.pageCount = pageRes.data.data.pageCount;
queryObj.total = pageRes.data.data.count;
if(!GName.value&&!GroupList.value[0].RecordNum) GroupList.value[0].RecordNum = pageRes.data.data.count
}
setTimeout(()=>{
loading.value = false
......@@ -365,6 +367,7 @@ const handleCurrentChange = (val: number) => {
}
querySearchGroup()
querySearchHandler()
onMounted(()=>{
// imgDiskRef.value.addEventListener("scroll", scrollingHandler);
})
......@@ -372,7 +375,7 @@ onMounted(()=>{
<style lang="scss" scoped>
.CloudDisk-L{
border-right: 1px solid #E9E9E9;
padding: 0 22px 22px 0;
padding: 0 20px 22px 0;
}
.CloudDisk-L-inquire{
margin-bottom: 20px;
......@@ -477,8 +480,9 @@ onMounted(()=>{
font-size: 14px;
color: #000000;
}
.CloudDisk-L-Center,.CloudDisk-R-Center{
/* max-height: 100px; */
.CloudDisk-L-Center{
max-height: 420px;
overflow-y: scroll;
}
.CloudDisk-R-Box.active .CloudDisk-R-Img{
width: 80px;
......@@ -491,9 +495,10 @@ onMounted(()=>{
.CloudDisk-R-Box .close-btn{
position: absolute;
top: -10px;
right: -10px;
right: -2px;
width: 20px;
height: 20px;
background: #fff;
border:1px solid #AFAFAF;
text-align: center;
color:#AFAFAF;
......
......@@ -55,13 +55,21 @@
<div class="MarketAdd MarketAddw140 pointer" @click="goToTemplate(showCurrentTemplate)">立即使用</div>
</div>
</div>
<template v-if="showCurrentTemplate.PageImageList.length>1">
<!-- <template v-if="showCurrentTemplate.PageImageList.length>1">
<div class="MarketDetaSw MarketDetaSwL" v-if="datas.currentImg!=0">
<div class="cursor-pointer" @click="ToggleImg('left')"></div>
</div>
<div class="MarketDetaSw MarketDetaSwR" v-if="datas.currentImg<showCurrentTemplate.PageImageList.length-1">
<div class="cursor-pointer" @click="ToggleImg('right')"></div>
</div>
</template> -->
<template v-if="props.Total>0">
<div class="MarketDetaSw MarketDetaSwL" v-if="props.TemCurrent!=0">
<div class="cursor-pointer" @click="ToggleImg('left')"></div>
</div>
<div class="MarketDetaSw MarketDetaSwR" v-if="props.TemCurrent<props.Total-1">
<div class="cursor-pointer" @click="ToggleImg('right')"></div>
</div>
</template>
</div>
</el-dialog>
......@@ -128,10 +136,20 @@ const props = defineProps({
Details:{
type: Object,
default: {},
}
},
TemCurrent:{
type: Number,
default: 0,
},
Total:{
type: Number,
default: 0,
},
})
const emit = defineEmits<{
(event: 'close'): void,
(event: 'previous'): void,
(event: 'next'): void,
}>()
// 删除监听滚动
......@@ -142,16 +160,19 @@ const CloseDetails = () => {
const ToggleImg = (text: String) => {
if(text=='left'){
if(datas.currentImg>0) {
datas.currentImg--
scrollContainer.value.scrollTop = imgList.value[datas.currentImg].imgTop
}
props.TemCurrent
emit('previous')
// if(datas.currentImg>0) {
// datas.currentImg--
// scrollContainer.value.scrollTop = imgList.value[datas.currentImg].imgTop
// }
}
if(text=='right'){
if(datas.currentImg<imgList.value.length-1) {
datas.currentImg++
scrollContainer.value.scrollTop = imgList.value[datas.currentImg].imgTop
}
emit('next')
// if(datas.currentImg<imgList.value.length-1) {
// datas.currentImg++
// scrollContainer.value.scrollTop = imgList.value[datas.currentImg].imgTop
// }
}
}
......
import { domainManager } from "../domainManager";
import { useUserStore } from "@/store";
import { storeToRefs } from 'pinia'
import { ElMessage } from "element-plus";
const { token } = storeToRefs(useUserStore())
class AliyunUpload {
static UploadAsync = async (file: any, name: string) => {
try {
const formData = new FormData();
formData.append('file', file);
let parms = {
istemp: 1,
isppt: 1,
uid: token.value
}
formData.append('parms', JSON.stringify(parms))
const response = await fetch(`${domainManager().UploadUrl}/Upload/UploadToALiOSS?filePath=${encodeURIComponent(name)}`, {
method: 'POST',
body: formData,
......@@ -12,7 +22,13 @@ class AliyunUpload {
if (response.ok) {
let result = await response.text()
let datas = JSON.parse(result)
return 'https://im.oytour.com' + datas.FilePath
if(datas.FilePath) return 'https://im.oytour.com' + datas.FilePath
else {
ElMessage.warning({
showClose: true,
message:datas.Message,
})
}
}
return ''
} catch (error) {
......@@ -30,7 +46,7 @@ class AliyunUpload {
if (response.ok) {
let result = await response.text()
let datas = JSON.parse(result)
return `${domainManager().ViittoFileUrl}` + datas.FilePath
return 'https://im.oytour.com' + datas.FilePath
}
return ''
} catch (error) {
......@@ -49,7 +65,13 @@ class AliyunUpload {
if (response.ok) {
let result = await response.text()
let datas = JSON.parse(result)
return 'https://im.oytour.com' + datas.FilePath
if(datas.FilePath) return 'https://im.oytour.com' + datas.FilePath
else {
ElMessage.warning({
showClose: true,
message:datas.Message,
})
}
}
return ''
} catch (error) {
......
......@@ -58,7 +58,7 @@
</div>
</el-tab-pane>
<el-tab-pane label="本地图" name="2">
<FileInput @change="files => insertImageElement(files)">
<!-- <FileInput @change="files => insertImageElement(files)">
<div class="upload-box">
<img v-if="imgPath" :src="imgPath" style="height: 200px;"/>
<div v-else>
......@@ -68,8 +68,8 @@
<p><em>点击上传图片</em></p>
</div>
</div>
</FileInput>
<!-- <CloudDisk :show="showVisible" :active="activeName" @getImg="getImg"></CloudDisk> -->
</FileInput> -->
<CloudDisk :show="showVisible" :active="activeName" @getImg="getImg"></CloudDisk>
</el-tab-pane>
<el-tab-pane label="图片地址" name="3">
<div class="row wrap q-mt-md">
......
......@@ -578,6 +578,13 @@ const getColorShade = async (newSlides:any) => {
x.elements = newElements
}
}
if(searchData.value.isTeamManage){
for(let i=0;i<newSlides.length;i++){
for(let j=0;j<newSlides[i].elements.length;j++){
if(newSlides[i].elements[j].layerName&&newSlides[i].elements[j].layerName.indexOf('logo')!=-1) newSlides[i].elements[j].lock = false
}
}
}
layoutsStore.setLayouts(JSON.parse(JSON.stringify(newSlides)))
if(searchData.value.sellId&&!searchData.value.TempId) return
slidesStore.setSlides(newSlides)
......
......@@ -174,7 +174,7 @@
</div>
<div>
<div class="MarketOpa2"></div>
<el-icon size="23px" theme="filled" class="MarketIconAbsolute cusor-pointer" @click="getTemplate(item)">
<el-icon size="23px" theme="filled" class="MarketIconAbsolute cusor-pointer" @click="getTemplate(item,index)">
<View></View>
</el-icon>
</div>
......@@ -205,7 +205,13 @@
</div>
<!-- 行程、广告图详情 -->
<temDetails :DetaTem="DetailsVisible" :Details="datas.TemDetails" @close="DetailsVisible=false"/>
<temDetails :DetaTem="DetailsVisible"
:Details="datas.TemDetails"
:Total="dataList.length"
:TemCurrent="datas.currentImg"
@close="DetailsVisible=false"
@previous="previous"
@next="next"/>
<!-- vip购买提示 -->
<vipFooter v-if="!userInfo.iv&&!userInfo.it&&!userInfo.OpenPrompt" @close="closeVip"></vipFooter>
</template>
......@@ -372,10 +378,25 @@ const deleteTemplate = (item:any) => {
}
const previous = () =>{
if(datas.currentImg>0){
datas.currentImg--
let item = dataList.value[datas.currentImg]
getTemplate(item,datas.currentImg)
}
}
const next = () =>{
if(datas.currentImg<dataList.value.length-1){
datas.currentImg++
let item = dataList.value[datas.currentImg]
getTemplate(item,datas.currentImg)
}
}
// 查看所有子模版
const getTemplate = (item:any) => {
const getTemplate = (item:any,index:Number) => {
DetailsVisible.value = true
datas.TemDetails = item
datas.currentImg = index
}
/**
......
......@@ -106,7 +106,6 @@ import { PropType, inject, reactive, ref, watch } from "vue";
import {createPlayLink, createSaleEditorLink, formatDateTimeToRead, query} from '@/utils/common'
import breadPeeling from './components/breadPeeling.vue'
import CopyFile from './components/CopyFile.vue'
import { useScreenStore, useSellTemplateStore, useSlidesStore } from "@/store";
import { injectKeyTemplate } from "@/types/injectKey";
import FolderService from "@/services/FolderService";
import { ArrowDown,ArrowUp } from "@element-plus/icons-vue";
......@@ -167,28 +166,6 @@ const breadPeelingInquire = (FileId: number, index: number) => {
refreshHandler();
}
const editorFileHandler = (item:any)=>{
let list:any = [{
id: "test-slide-1",
pageType: 0,
elements: [],
background: {
type: "solid",
color: "#ffffff",
},
}];
// const SalesEditorStore = useSellTemplateStore();
// useSlidesStore().setSlides(list);
// const marketStore = useScreenStore();
// searchData.value.sellId = item.FileId;
// searchData.value.sellTempId = item.TempId;
// searchData.value.TemplateType = item.FileType;
// searchData.value.ParentFileId = 0
// if(item.IsDownload==0) searchData.value.noExportPermission = true
// else searchData.value.noExportPermission = false
// if(item.IsView==0) searchData.value.noCopyPermission = true
// else searchData.value.noCopyPermission = false
// SalesEditorStore.setSalesEditor(2);
// marketStore.setMarket(false);
const cp = item.IsView==0?0:1
const ep = item.IsDownload==0?0:1
//@TODO:返回字段中缺少CreateBy,
......
......@@ -197,7 +197,13 @@
</el-table-column>
</el-table>
<!-- 行程、广告图详情 -->
<temDetails :DetaTem="DetailsVisible" :Details="datas.TemDetails" @close="DetailsVisible=false"/>
<temDetails :DetaTem="DetailsVisible"
:Details="datas.TemDetails"
:Total="dataList.length"
:TemCurrent="datas.currentImg"
@close="DetailsVisible=false"
@previous="previous"
@next="next"/>
</template>
<script setup lang="ts">
......@@ -209,7 +215,7 @@ import { useSellTemplateStore,useSlidesStore } from '@/store'
import { useScreenStore } from "@/store/screen";
import { storeToRefs } from "pinia";
import { injectKeyTemplate } from '@/types/injectKey'
import { createOpEditorLink, createSaleCreateLink, managerTemplateLink } from '@/utils/common'
import { createOpEditorLink, createSaleCreateLink, managerTemplateLink, noDataImg, openNewBlank } from '@/utils/common'
import { ElLoading, ElMessage, ElMessageBox } from "element-plus";
import { useRouter } from "vue-router";
import UserCard from "@/components/User/UserCard.vue";
......@@ -217,7 +223,6 @@ import temDetails from "@/components/home/temDetails.vue";
import { Edit,Delete,View,Search } from '@element-plus/icons-vue';
import { VIEWPORT_SIZE, VIEWPORT_VER_SIZE } from '@/configs/canvas'
import { noDataImg } from "@/utils/common";
const slidesStore = useSlidesStore()
......@@ -475,10 +480,25 @@ const handleScroll = (e) =>{
if(temp>=PageImageList[i].imgTop&&datas.currentImg!=i) datas.currentImg = i
}
}
const previous = () =>{
if(datas.currentImg>0){
datas.currentImg--
let item = dataList.value[datas.currentImg]
getTemplate(item,datas.currentImg)
}
}
const next = () =>{
if(datas.currentImg<dataList.value.length-1){
datas.currentImg++
let item = dataList.value[datas.currentImg]
getTemplate(item,datas.currentImg)
}
}
// 查看所有子模版
const getTemplate = async (item:any) => {
DetailsVisible.value = true
datas.TemDetails = item
datas.currentImg = index
}
/**
......@@ -490,9 +510,10 @@ const goToTemplate = (item: any) => {
let url = ''
url = managerTemplateLink(item.TempId,item.TemplateType)
if(url!='') {
router.push({
path:url
})
openNewBlank(url)
// router.push({
// path:url
// })
}
}
......
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