Commit d426a196 authored by zhengke's avatar zhengke

云盘空间

parent 0006a2e6
<template>
<div class="q-px-md q-pt-lg column full-height" ref="currentRootDom">
<div class="q-pl-lg row q-mb-lg">
<div class="column full-height" ref="currentRootDom">
<!-- <div class="q-pl-lg row q-mb-lg">
<div class="col row items-center q-pl-md">
<h5 class="row items-center">
<span class="q-pl-md">
......@@ -17,7 +17,7 @@
</el-icon>
</div>
</div>
</div>
</div> -->
<div class="col full-width full-height q-ml-md">
<div class="CloudDisk-form row full-height">
<div class="CloudDisk-L">
......@@ -61,11 +61,21 @@
</div>
<div class="CloudDisk-R grow">
<div class="row flex-center CloudDisk-R-inquire">
<el-input v-model="queryObj.FileName" placeholder="请输入图片名称搜索" clearable @keyup.enter="refreshHandler"
<!-- <el-input v-model="queryObj.FileName" placeholder="请输入图片名称搜索" clearable @keyup.enter="refreshHandler"
@input="SearchImg">
<template #append>
<el-button type="primary" style="color: white;" @click="refreshHandler">搜索</el-button>
</template>
</el-input> -->
<el-input style="max-width:600px" v-model="queryObj.FileName" placeholder="请输入图片名称搜索" class="q-pr-33" clearable
@keyup.enter="refreshHandler" @input="SearchImg">
<template #append>
<div class="Market-select-line absolute"></div>
<div class="row items-center pointer">
<img src="../../assets/img/home-search.png" width="21" height="21"
@click="refreshHandler"/>
</div>
</template>
</el-input>
</div>
<div ref="imgDiskRef" class="full-height" style="padding-top: 10px; overflow: auto;"
......@@ -189,6 +199,15 @@
import NewEditCloudDisk from '@/components/CloudDisk/NewEdit'
import copyMove from '@/components/CloudDisk/copyMove'
import { noDataImg } from "@/utils/common";
import { useRouter } from "vue-router";
const router = useRouter()
const currentRoute = router.currentRoute.value
const parmas = ref({} as any)
parmas.value = currentRoute.params
const props = defineProps({
isPersonage: '' as any,
})
const RefreshLoading = ref(false)
const queryObj = reactive({
pageIndex: 1,
......@@ -197,6 +216,8 @@
FileName: '',
total: 0
})
console.log(parmas.value,'----')
if(props.isPersonage) queryObj.CloudGroupId = parmas.value.id
const loading = ref(false as any)
const dataList = ref([] as Array<any>);
const currentRootDom = ref()
......@@ -413,7 +434,9 @@ const querySearchGroup = async () =>{
if(loadingGroup.value) return
loadingGroup.value = true
try {
let datasRes = await CloudDiskService.GetPPTCloudLists(GName.value);
let datasRes
if(props.isPersonage) datasRes = await CloudDiskService.GetPPTCloudList(GName.value);
else datasRes = await CloudDiskService.GetPPTCloudLists(GName.value);
if (datasRes.data.resultCode==ApiResult.SUCCESS) {
GroupList.value = datasRes.data.data.list
GroupList.value.unshift({
......@@ -445,7 +468,9 @@ const SearchImg = () =>{
loading.value = true;
try {
if (queryObj.pageIndex == 1) dataList.value = [];
let pageRes = await CloudDiskService.GetPPTCloudInfoPages(queryObj);
let pageRes
if(props.isPersonage) pageRes = await CloudDiskService.GetPPTCloudInfoPage(queryObj);
else pageRes = await CloudDiskService.GetPPTCloudInfoPages(queryObj);
if (pageRes.data.resultCode==ApiResult.SUCCESS) {
let arrList = function (list) {
list.forEach((x) => {
......
......@@ -93,10 +93,10 @@
}
const setCopy = async () =>{
setLoading.value = true
let pageRes;
if(props.dialogType==1) pageRes = await CloudDiskService.CloudFileCopy(params);
else pageRes = await CloudDiskService.CloudFileMove(params);
if (pageRes.data.resultCode==ApiResult.SUCCESS) {
let response;
if(props.dialogType==1) response = await CloudDiskService.CloudFileCopy(params);
else response = await CloudDiskService.CloudFileMove(params);
if (response.data.resultCode==ApiResult.SUCCESS) {
dialogFormVisible.value = false
emit('success')
}
......
......@@ -82,17 +82,83 @@
:initial-index="4"
fit="cover"
/> -->
<span class="close-btn cursor-pointer column items-center flex-center"
<!-- <span class="close-btn cursor-pointer column items-center flex-center"
@click.stop="deleteImg(item)">
<IconClose :size="10"></IconClose>
</span>
</span> -->
<!-- <div class="CloudDiskIcon row flex-between">
<div class="CloudDiskIconC CloudDiskIconCL">
<div class="CloudDiskOpa CloudDiskOpaL"></div>
<el-icon size="15px" theme="filled" class="CloudDiskAbsolute CloudDiskAbsoluteL cusor-pointer" @click.stop="deleteImg(item)">
<Delete></Delete>
</el-icon>
</div>
<div class="CloudDiskIconC CloudDiskIconCR">
<div class="CloudDiskOpa CloudDiskOpaR"></div>
<el-icon size="15px" theme="filled" class="CloudDiskAbsolute CloudDiskAbsoluteR cusor-pointer" @click.stop="ImgDetails(item,index)">
<View></View>
</el-icon>
</div>
</div> -->
</div>
<span class="title block">
<el-tooltip effect="dark" :content="item.FileName" placement="top">
<el-tooltip effect="dark" :content="item.FileName" placement="bottom">
{{item.FileName}}
</el-tooltip>
</span>
<div class="MoreClickBox">
<div class="MoreClick row items-center"><el-icon size="13" @click.stop="clickMore(index)"><MoreFilled /></el-icon></div>
<div class="MoreClickCenter column" v-if="ShowMessage&&currentMore==index">
<div class="cloudDownName microsoft">
<div class="col row user-nickname" style="color:#000;" v-if="editorTarget!=item.DetailsId">
<span class="grow text-left">{{item.FileName}}</span>
<IconPencli size="14" class="q-ml-md cusor-pointer editor-pencli" @click.stop="setNameHandler(item)"></IconPencli>
</div>
<div class="col row items-center" v-else>
<el-input v-model="nickNam" placeholder="请输入用户昵称" size="small" class="col" />
<el-button link size="small" class="q-ml-sm" type="primary" @click.stop="setCloudNameHandler(item)"
:loading="editLoading">确认</el-button>
<el-button link size="small" style="margin-left: 5px;" @click.stop="setNameHandler">取消</el-button>
</div>
</div>
<div class="cloudDownText row flex-between">
<span>类型</span>
<span>图片</span>
</div>
<div class="cloudDownText row flex-between">
<span>格式</span>
<span>{{item.FileName.split('.')[1]}}</span>
</div>
<div class="cloudDownText row flex-between" v-if="item.WithHeight">
<span>尺寸</span>
<span>{{item.WithHeight}} px</span>
</div>
<div class="cloudDownText cloudDownTextLin row flex-between">
<span>大小</span>
<span>{{item.FileSize}} kb</span>
</div>
<div class="common q-py-md microsoft">
<!-- <div class="row items-center cloudDownControls" @click.stop="goTidyUp(item)">
<el-icon size="15px" theme="filled">
<Menu></Menu>
</el-icon>
<span class="q-pl-md">整理文件</span>
</div> -->
<div v-if="ImgId!=item.DetailsId" class="row items-center cloudDownControls" @click.stop="deleteImg(item)">
<el-icon size="15px" theme="filled">
<Delete></Delete>
</el-icon>
<span class="q-pl-md">删除</span>
</div>
<div class="row items-center cloudDownControls" @click.stop="ImgDetails(item,index)">
<el-icon size="15px" theme="filled">
<View></View>
</el-icon>
<span class="q-pl-md">查看</span>
</div>
</div>
</div>
</div>
</div>
</template>
</div>
......@@ -117,12 +183,18 @@
:addEditMsg="addEditMsg"
@close="close"
@success="dialogFormVisible=false,querySearchGroup()"></NewEditCloudDisk>
<el-image-viewer
@close="() => { isViewerShow = false }"
v-if="isViewerShow"
:initial-index="currentImg"
:url-list="srcList"></el-image-viewer>
</template>
<script lang="ts" setup>
import { Plus, Top, Bottom, Delete, Edit } from "@element-plus/icons-vue";
import { reactive, ref, onMounted, watch} from "vue";
import { reactive, ref, onMounted, watch, onBeforeUnmount} from "vue";
import CloudDiskService from '@/services/CloudDiskService'
import { ElLoading, ElMessage, ElMessageBox } from "element-plus";
import { Plus, Top, Bottom, Delete, Edit, View } from "@element-plus/icons-vue";
import FileInput from '@/components/FileInput.vue'
import { getImageDataURL } from '@/utils/image'
import AliyunUpload from '@/utils/upload/aliyun'
......@@ -130,6 +202,7 @@ import { useUserStore } from "@/store";
import { storeToRefs } from 'pinia'
import { ApiResult } from "@/configs/axios";
import NewEditCloudDisk from './NewEdit'
import { openNewBlank } from '@/utils/common';
const { token, userInfo } = storeToRefs(useUserStore())
......@@ -156,6 +229,7 @@ const dataList = ref([] as any)
const loading = ref(false)
const loadingGroup = ref(false)
const GroupList = ref([] as any)
const srcList = ref([] as any)
const props = defineProps({
active: '' as any,
......@@ -163,6 +237,13 @@ const props = defineProps({
})
const GroupObj = ref({} as any)
const currentImg = ref(-1)
const isViewerShow = ref(false);
const nickNam = ref(''|| Number)
const editorTarget = ref('')
const editLoading = ref(false)
const ShowMessage = ref(false)
const currentMore = ref(0)
const emit = defineEmits<{
(event: 'setImg'): void,
......@@ -176,8 +257,48 @@ watch(() => props.show, () => {
if(!props.show) ImgId.value = ''
})
const goTidyUp = (row:any) => {
openNewBlank(`/u/cloudDiskSpace`)
}
const clickMore = (index:Number) => {
ShowMessage.value = true
currentMore.value = index
setNameHandler()
}
const setCloudNameHandler = async (target:any)=>{
if(editLoading.value || nickNam.value=='' || !nickNam.value) return
editLoading.value = true
let params = {
Id: target.DetailsId,
FileName: nickNam.value
}
let dataRes = await CloudDiskService.UpdateCloudInfoName(params)
if (dataRes.data.resultCode==ApiResult.SUCCESS) {
querySearchHandler()
editorTarget.value = ''
nickNam.value = ''
}
editLoading.value = false
}
const setNameHandler = (target:any) =>{
if(target){
editorTarget.value = target.DetailsId
nickNam.value = target.FileName
}else{
editorTarget.value = ''
nickNam.value = ''
}
}
const ImgDetails = (item:any,index:Number) =>{
currentImg.value = index
isViewerShow.value = true
}
const setImg = (item:any) => {
ImgId.value = item.DetailsId
// setImgDefinition(item.DetailsId)
emit('getImg',item.FilePath)
}
......@@ -267,11 +388,11 @@ const deleteImg = (item:any) => {
).then(async () => {
try {
loading.value = true
let dataRes = await CloudDiskService.RemovePPTCloudInfo(item.DetailsId)
const dataRes = await CloudDiskService.RemovePPTCloudInfo(item.DetailsId)
loading.value = false
if (dataRes.data.resultCode==ApiResult.SUCCESS) {
querySearchHandler()
}
loading.value = false
} catch (error) {}
}).catch(() => {})
......@@ -361,17 +482,18 @@ const querySearchHandler = async () =>{
loading.value = true
try {
// if(queryObj.pageIndex == 1) dataList.value =[]
let pageRes = await CloudDiskService.GetPPTCloudInfoPage(queryObj);
if (pageRes.data.resultCode==ApiResult.SUCCESS) {
const response = await CloudDiskService.GetPPTCloudInfoPage(queryObj);
if (response.data.resultCode==ApiResult.SUCCESS) {
let arrList = function(list){
list.forEach(x=>{
x.checked = false
})
}
arrList(pageRes.data.data.pageData)
dataList.value = pageRes.data.data.pageData //dataList.value.concat(pageRes.data.data.pageData);
queryObj.pageCount = pageRes.data.data.pageCount;
total.value = pageRes.data.data.count;
arrList(response.data.data.pageData)
dataList.value = response.data.data.pageData //dataList.value.concat(response.data.data.pageData);
queryObj.pageCount = response.data.data.pageCount;
srcList.value = dataList.value.map(x=>x.FilePath)
total.value = response.data.data.count;
}
setTimeout(()=>{
loading.value = false
......@@ -399,12 +521,31 @@ const handleCurrentChange = (val: number) => {
queryObj.pageIndex = val
querySearchHandler()
}
// 清晰度处理
const setImgDefinition = async (DetailsId:any) =>{
try {
const response = await CloudDiskService.ImgDefinition(DetailsId);
if (response.data.resultCode==ApiResult.SUCCESS) {
}
}catch(err){}
}
querySearchGroup()
querySearchHandler()
onMounted(()=>{
// imgDiskRef.value.addEventListener("scroll", scrollingHandler);
})
onMounted( () => {
document.addEventListener('click', (e) => {
if (ShowMessage.value&&!editorTarget.value) {
ShowMessage.value = false
setNameHandler()
}
});
})
onBeforeUnmount(() => {
document.removeEventListener('click', () => {});
})
</script>
<style lang="scss" scoped>
.CloudDisk-R-inquire::v-deep(.el-button){
......@@ -510,6 +651,7 @@ onMounted(()=>{
border-radius: 8px;
overflow: hidden;
border:2px solid transparent;
position: relative;
}
.CloudDisk-R-Img .el-image{
......@@ -556,4 +698,63 @@ onMounted(()=>{
.CloudDisk-R-Box.active2:hover .close-btn{
display: block;
}
.MoreClickBox{
position: absolute;
right: 10px;
top: 10px;
z-index: 2;
background: #fff;
border-radius: 10px;
text-align: center;
padding: 0 3px;
}
.MoreClick .el-icon{
color: #b1b7cf ;
}
.MoreClickBox:hover {
background: #8790F3;
}
.MoreClick:hover .el-icon{
color: #fff;
}
.MoreClickCenter{
position: absolute;
top: 22px;
right: -20px;
background: #fff;
border-radius: 3px;
box-shadow: 2px 2px 10px 2px #EEE;
}
.MoreClickCenter::after{
content: '';
width: 0;
height: 0;
position: absolute;
right: 25px;
top: -8px;
border-left: 5px solid transparent;
border-right: 5px solid transparent;
border-bottom: 10px solid #FFF;
}
.cloudDownName{
min-width: 200px;
padding: 10px 20px 15px 20px;
font-size: 14px;
color: #000;
}
.cloudDownText{
padding: 0 20px 10px 20px;
font-size: 14px;
}
.cloudDownTextLin{
border-bottom: 1px solid #F0F0F0;
}
.cloudDownControls{
padding: 10px 10px;
}
.cloudDownControls:hover{
background: #dedcff;
color: $el-color-primary;
}
</style>
\ No newline at end of file
<template>
<div class="items-center row">
<div class="primary-link-button q-mr-lg cusor-pointer no-select" v-if="parmas.path=='/m'"
@click="goDesNorm" style="color: #448026 !important;background: #ecf2e9;">模板设计规范</div>
<img src="https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1713433759000_282.png"
style="height: 33px" @click="forwardProduct" class="cusor-pointer"/>
<div class="primary-link-button q-ml-lg cusor-pointer no-select" @click="addVisible=true">创建设计</div>
......@@ -129,6 +131,11 @@ const enTheme = ENT_USER_THEME
const fr = userInfo.value.it?EntMemberRight:(userInfo.value.iv?PersonMemberRight:FreeMemberRight)
const isShowPerson = ref(true)
const sampleData = ref<any[]>([0,0,0])
const currentRoute = router.currentRoute.value
const parmas = ref({} as any)
parmas.value = currentRoute
const format = (percentage: number) => {
return percentage == 100 ? '' : ``
}
......@@ -141,6 +148,10 @@ const moreList = [
const TravelDesign = ref({} as any)
const goDesNorm = () => {
openNewBlank('/d')
}
const forwardUserCenter = ()=>{
router.push('/u')
}
......
......@@ -27,7 +27,7 @@
:class="[datas.TemplateBoxRec&&datas.TemplateBoxRec.Id==item.Id?'colorF':'color0']">{{item.Name}}</span>
<p class="q-pl-md"
:class="[datas.TemplateBoxRec&&datas.TemplateBoxRec.Id==item.Id?'colorF':'colorBA']">
<span class="q-ml-xs">{{item.width}} * {{item.height}} px</span>
<span class="q-ml-xs" v-if="item.width">{{item.width}} * {{item.height}} px</span>
</p>
</div>
<div v-if="setTemplateType==2&&!item.type" class="row addTemplateBoxRec rounded6 cursor-pointer"
......@@ -36,15 +36,23 @@
:class="[datas.TemplateBoxRec&&datas.TemplateBoxRec.Id==item.Id?'colorF':'color0']">{{item.Name}}</span>
<p class="q-pl-md"
:class="[datas.TemplateBoxRec&&datas.TemplateBoxRec.Id==item.Id?'colorF':'colorBA']">
<span class="q-ml-xs">{{item.width}} * {{item.height}} px</span>
<span class="q-ml-xs" v-if="item.width">{{item.width}} * {{item.height}} px</span>
</p>
</div>
</div>
</div>
</div>
<div class="addTemplateBox fz14" v-if="setTemplateType==2">
<div class="color0 text-left q-pb-lg">自义定尺寸</div>
<div class="addTemplateInput q-mt-xs row items-center">
<div class="color0 text-left q-pb-lg row flex-between">
<span>自义定尺寸</span>
<el-switch
v-model="CustomSwitch"
:active-color="$el-color-primary"
inactive-color="#8790F3"
@change="getDimension">
</el-switch>
</div>
<div v-if="CustomSwitch" class="addTemplateInput q-mt-xs row items-center">
<el-input type="number" min="750" v-model="datas.CustomSize.width"
placeholder="宽" class="input-with-select" @change="setDimension"></el-input>
<span class="q-px-md">*</span>
......@@ -70,7 +78,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, openNewBlank } from '@/utils/common'
import { ElLoading, ElMessage, ElMessageBox } from "element-plus";
import { useRouter } from "vue-router";
import UserCard from "@/components/User/UserCard.vue";
......@@ -78,8 +86,6 @@ import { Delete,View } from '@element-plus/icons-vue';
import { VIEWPORT_SIZE, VIEWPORT_VER_SIZE } from '@/configs/canvas'
import foote from '@/components/footer/index.vue';
import { noDataImg } from "@/utils/common";
const {
userInfo
} = storeToRefs(useUserStore())
......@@ -93,9 +99,11 @@ const layouts = ref([
])
const marketRef = ref<any>()
const RecommendedSizes = ref([
{Name: '使用模板创建(推荐)',width:'',height:'',Id:7,checked:false},
{Name: '手机海报',width:750,height:1334,Id:1,checked:false},
{Name: '小红书配图',width:1242,height:1660,Id:2,checked:false},
{Name: '公众号首图',width:900,height:383,Id:3,checked:false},
{Name: '使用模板创建(推荐)',width:'',height:'',Id:6,checked:false,type:1},
{Name: 'PPT(16:9)',width:1754,height:1240,Id:4,checked:false,type:1},
{Name: 'PPT(9:16)',width:1240,height:1754,Id:5,checked:false,type:1},
])
......@@ -169,6 +177,20 @@ const emit = defineEmits<{
(event:'OK'): void,
}>()
const CustomSwitch = ref(false)
const getDimension = () => {
const Dimension = localStorage.getItem('LastSize')
const LastSize = Dimension?JSON.parse(Dimension):null
if(CustomSwitch.value) {
if(LastSize){
datas.CustomSize.width = LastSize.width
datas.CustomSize.height = LastSize.height
}else Recommended(RecommendedSizes.value[1])
setDimension()
}
}
const close = () => {
emit('close')
}
......@@ -180,6 +202,10 @@ const Recommended = (row:Object) => {
datas.TemplateBoxRec = row
datas.CustomSize.width = null
datas.CustomSize.height = null
if(!row.type) {
if(row.Id!=7) localStorage.setItem('LastSize',JSON.stringify(row))
CustomSwitch.value = false
}
}
const ConfirmCreation = () => {
if(setTemplateType.value==1&&!datas.TemplateBoxRec) {
......@@ -188,22 +214,26 @@ const ConfirmCreation = () => {
message: `请选择推荐尺寸`,
})
}
if(setTemplateType.value==2&&!datas.TemplateBoxRec&&!datas.CustomSize.width&&!datas.CustomSize.height) {
if(setTemplateType.value==1&&datas.TemplateBoxRec&&datas.TemplateBoxRec.Id==6){
return openNewBlank(`/market/create/trip`)
}
if(setTemplateType.value==2&&!datas.TemplateBoxRec&&!CustomSwitch.value) {
return ElMessage.warning({
showClose: true,
message: `请选择推荐尺寸或自定义尺寸`,
})
}
if(setTemplateType.value==2&&!datas.TemplateBoxRec&&
((datas.CustomSize.width&&!datas.CustomSize.height)
||(!datas.CustomSize.width&&datas.CustomSize.height))){
if(!datas.width){
if(setTemplateType.value==2&&datas.TemplateBoxRec&&datas.TemplateBoxRec.Id==7) {
return openNewBlank(`/market/create/ad`)
}
if(setTemplateType.value==2&&CustomSwitch.value&&(!datas.CustomSize.width||!datas.CustomSize.height)){
if(!datas.CustomSize.width){
return ElMessage.warning({
showClose: true,
message: `请输入自定义宽`,
})
}
if(!datas.height){
if(!datas.CustomSize.height){
return ElMessage.warning({
showClose: true,
message: `请输入自定义高`,
......@@ -215,13 +245,12 @@ const ConfirmCreation = () => {
VIEWPORT_SIZE.value = datas.TemplateBoxRec.width
VIEWPORT_VER_SIZE.value = datas.TemplateBoxRec.height
if(datas.TemplateBoxRec.Id==4||datas.TemplateBoxRec.Id==5) {
viewportRatios = datas.TemplateBoxRec.Id==4? 0.7069 : 1.414
slidesStore.setViewportRatio(viewportRatios)
datas.TemplateBoxRec = null
addTemplate(1)
}else {
}else if(datas.TemplateBoxRec.Id==1||datas.TemplateBoxRec.Id==2||datas.TemplateBoxRec.Id==3) {
viewportRatios = datas.TemplateBoxRec.height/datas.TemplateBoxRec.width
slidesStore.setViewportRatio(viewportRatios)
datas.TemplateBoxRec = null
......
......@@ -144,7 +144,8 @@ import {
Pencil,
ToBottom,
PeopleSafe,
StarOne
StarOne,
CloudStorage
} from '@icon-park/vue-next'
export interface Icons {
......@@ -293,7 +294,8 @@ export const icons: Icons = {
IconPencli:Pencil,
IconToBottom:ToBottom,
IconPeopleSafe:PeopleSafe,
IconStarOne:StarOne
IconStarOne:StarOne,
IconCloudStorage:CloudStorage
}
export default {
......
......@@ -221,6 +221,13 @@ const routes: RouteRecordRaw[] = [
title:'水印设置'
}
},
{
path: '/a/c',
component: () => import('@/views/TeamCenter/CloudDiskSpace.vue'),
meta:{
title:'云盘空间'
}
},
{
path: '/a/order',
component: () => import('@/views/TeamCenter/Order.vue'),
......@@ -293,6 +300,13 @@ const routes: RouteRecordRaw[] = [
title:'账户设置'
}
},
{
path: '/u/cloudDiskSpace',
component: () => import('@/views/UserCenter/CloudDiskSpace.vue'),
meta:{
title:'云盘空间'
}
},
]
},
{
......@@ -332,6 +346,22 @@ const routes: RouteRecordRaw[] = [
},
]
},
{
path: '/d',
component: () => import('@/views/DesignSpecification/Layout.vue'),
meta:{
title:'模版设计规范'
},
children:[
{
path: '/d',
component: () => import('@/views/DesignSpecification/Index.vue'),
meta:{
title:'设计规范'
}
},
]
},
{
path: '/p/show',
component: () => import('@/views/Product/Show.vue'),
......
......@@ -3,6 +3,15 @@ import Api,{ HttpResponse, Result } from './../utils/request';
class CloudDiskService{
static async BaiduImageDefinition(params:any):Promise<HttpResponse>{
return Api.Post("ppt_BaiduImageDefinition",params)
}
static async ImgDefinition(DetailsId:any):Promise<HttpResponse>{
let params = { DetailsId }
return Api.Post("ppt_ImgDefinition",params)
}
static async CloudFileCopy(params:any):Promise<HttpResponse>{
return Api.Post("ppt_CloudFileCopy",params)
}
......
......@@ -19,6 +19,7 @@ const menus:{menu:Menu,owner:MenuOwner}[] = [
{menu:{name:'水印设置',icon:'IconTag',url:'/u/w'},owner:'*'},
{menu:{name:'订单/发票',icon:'IconCurrency',url:'/u/order'},owner:'*'},
{menu:{name:'账户设置',icon:'IconProtect',url:'/u/setting'},owner:'*'},
// {menu:{name:'云盘空间',icon:'IconCloudStorage',url:'/u/cloudDiskSpace'},owner:'*'},
{menu:{name:'模版管理',icon:'IconPageTemplate',url:'/m'},owner:'M'},
{menu:{name:'国家',icon:'IconWorld',url:'/m/nation'},owner:'M'},
{menu:{name:'颜色',icon:'IconPlatte',url:'/m/colour'},owner:'M'},
......@@ -27,6 +28,7 @@ const menus:{menu:Menu,owner:MenuOwner}[] = [
{menu:{name:'成员管理',icon:'IconPeoples',url:'/a/u'},owner:'A'},
{menu:{name:'数据统计',icon:'IconDashBoard',url:'/a/d'},owner:'A'},
{menu:{name:'水印设置',icon:'IconTag',url:'/a/w'},owner:'A'},
// {menu:{name:'云盘空间',icon:'IconCloudStorage',url:'/a/c'},owner:'A'},
{menu:{name:'订单/发票',icon:'IconCurrency',url:'/a/order'},owner:'E'},
{
menu:{
......
<template>
<div class="column">
<template v-for="(item,index) in DesignSpec">
<el-image
style="width: 100vw;"
:src="item">
</el-image>
</template>
</div>
</template>
<script setup lang="ts">
import { reactive, ref } from "vue";
const DesignSpec = reactive([
require("@/assets/img/norm_01.jpg"),
require("@/assets/img/norm_02.jpg"),
require("@/assets/img/norm_03.jpg"),
require("@/assets/img/norm_04.jpg"),
require("@/assets/img/norm_05.jpg"),
require("@/assets/img/norm_06.jpg"),
require("@/assets/img/norm_07.jpg"),
])
</script>
<style lang="scss" scoped>
</style>
\ No newline at end of file
<template>
<div class="window-height column">
<div class="user-center-header row items-center">
<img src="https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Static/pptTD.png"
style="height: 24px" />
<div class="q-ml-lg text-weight-bold" style="font-size: 20px">
模板设计规范
</div>
<div class="col"></div>
<UserCard :size="33"></UserCard>
</div>
<el-scrollbar class="col full-height" wrap-style="overflow-x:unset;">
<router-view />
</el-scrollbar>
</div>
</template>
<script lang="ts" setup>
import { storeToRefs } from 'pinia'
import UserCard from "@/components/User/UserCard.vue";
import { useMenuStore,useScreenStore } from "@/store";
import { ref, watch } from "vue";
import { useRouter } from "vue-router";
import { useUserStore } from "@/store/user"
const router = useRouter()
const useMenu = useMenuStore();
const menus = ref(useMenu.getTemplateMenu);
const { model } = storeToRefs(useScreenStore())
const activeIndex = ref(0)
const userStore= useUserStore()
const userInfo = userStore.getUser
if(!userInfo.isTemplate && !userInfo.iv && !userInfo.ic && !userInfo.ia) router.push('/notfound')
const forwardSpace = () => router.push('/space')
watch(() => router.currentRoute.value.path, (toPath) => {
if(!userInfo.isTemplate && !userInfo.iv && !userInfo.ic && !userInfo.ia) return router.push('/notfound')
menus.value = useMenu.getTemplateMenu
if(!menus.value) return
activeIndex.value = menus.value.findIndex(x=>x.url==router.currentRoute.value.path)
},{immediate: true,deep: true})
</script>
<style scoped>
.user-center-header {
padding: 0 40px 0 28px;
border-bottom: 1px solid #efefef;
height: 56px;
color: #000;
}
.user-center-menu {
width: 232px;
padding: 20px 0 20px 16px;
font-family: microsoft yahei;
}
.user-center-body {
padding: 20px 40px 40px 40px;
}
</style>
<template>
<div class="UploadPicture-from">
<div class="UploadPicture-fromB rounded">
<div class="UploadPicture-fromB rounded"
:class="[winHeight<800?'marginTop':'']">
<div>
<div class="text-title">选择、上传图片</div>
</div>
......@@ -62,7 +63,7 @@
<BuyProduct></BuyProduct>
</div>
</el-tab-pane>
<el-tab-pane label="本地图" name="2">
<el-tab-pane label="我的空间" name="2">
<!-- <FileInput @change="files => insertImageElement(files)">
<div class="upload-box">
<img v-if="imgPath" :src="imgPath" style="height: 200px;"/>
......@@ -166,6 +167,9 @@ const { imgPoolVisible } = storeToRefs(useScreenStore())
const searchData = ref({} as any)
searchData.value = inject(injectKeyTemplate)
const winHeight = ref(0)
winHeight.value = window.innerHeight
watch(() => imgPoolVisible.value, () => {
if(imgPoolVisible.value) showVisible.value = true
})
......@@ -362,6 +366,9 @@ getImgList()
background: #fff;
padding: 20px;
}
.UploadPicture-fromB.marginTop{
margin: 2.5vw auto 0;
}
.col #tippy-30{
z-index: 99999 !important;
}
......
......@@ -31,10 +31,6 @@
<div class="item" :class="{'active':currentMenu==-1}" @click="setCurrentMenuHandler(-1)" v-if="userInfo.iv||userInfo.it"><el-icon color="#564bec" class="q-mr-md" size="16"><Delete /></el-icon>回收站</div>
</div>
<div class="tabs-items" v-if="userInfo.iv||userInfo.it">
<div class="q-mb-md q-ml-lg text-small">我的云盘</div>
<div class="item" :class="{'active':currentMenu==5}" @click="setCurrentMenuHandler(5)"><el-icon color="#564bec" class="q-mr-md" size="16"><MostlyCloudy /></el-icon>云盘空间</div>
</div>
</div>
<div class="col">
<BrowsingHistory :current-menu="currentMenu" v-if="currentMenu==0"></BrowsingHistory>
......@@ -42,7 +38,6 @@
<journeyAds :position="position" :current-menu="currentMenu" v-if="currentMenu==3||currentMenu==4" @destroy-position="()=>position=null"></journeyAds>
<RecycleBin :current-menu="currentMenu" v-if="currentMenu==-1"></RecycleBin>
<ShareList :position="position" v-if="currentMenu==2" @destroy-position="()=>position=null"></ShareList>
<CloudDiskList v-if="currentMenu==5"></CloudDiskList>
</div>
</template>
<script setup lang="ts">
......@@ -54,7 +49,6 @@ import StarTarget from './StarTarget.vue'
import ShareList from './Share.vue';
import journeyAds from './journeyAds.vue'
import RecycleBin from './RecycleBin.vue'
import CloudDiskList from './CloudDiskList.vue'
import { Plus,ArrowDown,Clock,Star,Share,Picture,Management,Delete,Setting } from '@element-plus/icons-vue';
import { useRouter } from 'vue-router';
import { openNewBlank } from '@/utils/common';
......
<template>
<CloudDiskList></CloudDiskList>
</template>
<script setup lang="ts">
import CloudDiskList from '@/components/CloudDisk/CloudDiskList.vue'
</script>
<style lang="scss" scoped>
</style>
\ No newline at end of file
......@@ -28,7 +28,7 @@
<!-- <IconRight :size="20"></IconRight> -->
<div class="col"></div>
<span class="text-grey-8">还可创建:</span>
<span class="text-dark q-ml-md">0个行程</span>
<span class="text-dark q-ml-md">不限制</span>
</div>
</el-card>
<el-card class="user-card" shadow="never">
......
......@@ -30,9 +30,12 @@
</el-menu>
<el-button class="full-width pingfangr text-weight-bolder" @click="forwardSpace" style="font-size: 14px !important;" icon="arrow-left">返回工作台</el-button>
</div>
<el-scrollbar class="col full-height user-center-body full-scroll" wrap-style="overflow-x:unset;" view-style="padding-bottom:30px;">
<el-scrollbar v-if="menus[activeIndex].url!='/a/c'" class="col full-height user-center-body" wrap-style="overflow-x:unset;" view-style="padding-bottom:30px;">
<router-view />
</el-scrollbar>
<div v-else class="col full-height user-center-body" view-style="padding-bottom:30px;">
<router-view />
</div>
</div>
</div>
</template>
......
<template>
<CloudDiskList :isPersonage="1"></CloudDiskList>
</template>
<script setup lang="ts">
import CloudDiskList from '@/components/CloudDisk/CloudDiskList.vue'
</script>
<style lang="scss" scoped>
</style>
\ No newline at end of file
......@@ -20,9 +20,12 @@
</el-menu>
<el-button class="full-width pingfangr text-weight-bolder" @click="forwardSpace" style="font-size: 14px !important;" icon="arrow-left">返回工作台</el-button>
</div>
<el-scrollbar class="col full-height user-center-body" wrap-style="overflow-x:unset;" view-style="padding-bottom:30px;">
<el-scrollbar v-if="menus[activeIndex].url!='/u/cloudDiskSpace'" class="col full-height user-center-body" wrap-style="overflow-x:unset;" view-style="padding-bottom:30px;">
<router-view />
</el-scrollbar>
<div v-else class="col full-height user-center-body" view-style="padding-bottom:30px;">
<router-view />
</div>
</div>
</div>
</template>
......
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