Commit 5b0ea80d authored by 黄奎's avatar 黄奎

Merge branch 'master' of http://gitlab.oytour.com/viitto/pptist

parents e6eb9d10 d426a196
<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')
}
......
This diff is collapsed.
<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