Commit 38394a72 authored by 黄奎's avatar 黄奎

111

parents 4b906066 ccd06b45
......@@ -514,9 +514,6 @@ page {
.q-mt-lg{
margin-top:20px
}
.q-mb-md{
margin-bottom:10px
}
.q-mb-lg{
margin-bottom:20px
}
......@@ -738,7 +735,8 @@ page {
border:none !important;
}
.el-button:not(.is-link).none-border,.el-menu-item.none-border,
.el-button:not(.is-link).none-border:hover,.el-menu-item.none-border:hover{
.el-button:not(.is-link).none-border:hover,.el-menu-item.none-border:hover,
.el-dropdown.none-border:hover,.el-dropdown-menu.none-border:hover{
border: 0;
}
.el-avatar--square{
......
<template>
<el-dialog v-model="dialogFormVisible"
:show-close="false"
:title="dialogTitle" width="340"
:close-on-press-escape="false" :close-on-click-modal="false" >
<div>
<el-input v-model="addEditMsg.GName"
placeholder="请输入分组名称">
</el-input>
<el-input class="q-pt-lg" type="Number" v-model="addEditMsg.SortNum"
placeholder="排序">
</el-input>
</div>
<template #footer>
<div class="dialog-footer">
<el-button @click="close">取消</el-button>
<el-button type="primary" @click="setGroup" :loading="setLoading">
确认
</el-button>
</div>
</template>
</el-dialog>
</template>
<script lang="ts" setup>
import { reactive, ref, onMounted, watch} from "vue";
import { ElLoading, ElMessage, ElMessageBox } from "element-plus";
import CloudDiskService from '@/services/CloudDiskService'
import { ApiResult } from "@/configs/axios";
const dialogFormVisible = ref(true)
const dialogTitle = ref('')
const setLoading = ref(false)
// const addEditMsg = reactive({
// Id: '',
// GName: '',
// SortNum: null,
// })
const props = defineProps({
dialogType: {
type: Number,
required: true,
},
addEditMsg: {
type: Object,
required: '',
},
})
const emit = defineEmits<{
(event: 'close'): void,
(event: 'success'): void,
}>()
dialogTitle.value = props.dialogType==1?'新增分组名称':'编辑分组名称'
const close = () =>{
dialogFormVisible.value = false
emit('close')
}
const setGroup = async () =>{
if(!props.addEditMsg.GName) return ElMessage.warning({
showClose: true,
message: `请输入分组名称`,
})
setLoading.value = true
let pageRes = await CloudDiskService.SetPPTCloudGroup(props.addEditMsg);
if (pageRes.data.resultCode==ApiResult.SUCCESS) {
dialogFormVisible.value = false
emit('success')
}
setLoading.value = false
}
</script>
\ No newline at end of file
<template>
<el-dialog v-model="dialogFormVisible"
:show-close="false"
:title="dialogTitle" width="340"
:close-on-press-escape="false" :close-on-click-modal="false" >
<div v-loading="loadingGroup">
<el-select v-model="params.GId" placeholder="Select" style="width: 100%;"
@change="getGName">
<el-option
v-for="item in GroupList"
:key="item.Id"
:label="item.GName"
:value="item.Id"
>
</el-option>
</el-select>
</div>
<template #footer>
<div class="dialog-footer">
<el-button @click="close">取消</el-button>
<el-button type="primary" @click="submit" :loading="setLoading">
确认{{dialogType==1?'复制':'移动'}}
</el-button>
</div>
</template>
</el-dialog>
</template>
<script lang="ts" setup>
import { reactive, ref, onMounted, watch} from "vue";
import { ElLoading, ElMessage, ElMessageBox } from "element-plus";
import CloudDiskService from '@/services/CloudDiskService'
import { ApiResult } from "@/configs/axios";
const dialogFormVisible = ref(true)
const dialogTitle = ref('')
const setLoading = ref(false)
const loadingGroup = ref(false)
// const GroupList = ref([] as any)
const currentGroup = ref('' as any)
const props = defineProps({
dialogType: {
type: Number,
required: true,
},
DetailsId: {
type: String,
required: '',
},
GroupId: {
type: String,
required: '',
},
GroupList:{
type: Array,
required: [],
}
})
const params = reactive({
Id: '' as String,
GId: '' as String,
})
params.GId = props.GroupId
const emit = defineEmits<{
(event: 'close'): void,
(event: 'success'): void,
}>()
dialogTitle.value = props.dialogType==1?'复制文件':'移动文件'
const getGName = () =>{
let GroupArr = GroupList.value.filter(x=>x.Id==params.GId)
currentGroup.value = GroupArr[0].GName
}
const close = () =>{
dialogFormVisible.value = false
emit('close')
}
const submit = () => {
params.Id = props.DetailsId
let text = ''
if(props.dialogType==1)text = `复制到${currentGroup.value}分组下`
else text = `移动至${currentGroup.value}分组下`
ElMessageBox.confirm(
`${text}`,
'提示',
{
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}
).then(() => {
setCopy()
}).catch(() => {})
}
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) {
dialogFormVisible.value = false
emit('success')
}
setLoading.value = false
}
const querySearchGroup = async () =>{
if(loadingGroup.value) return
loadingGroup.value = true
try {
// let datasRes = await CloudDiskService.GetPPTCloudLists('');
// if (datasRes.data.resultCode==ApiResult.SUCCESS) {
// GroupList.value = datasRes.data.data.list
// GroupList.value.unshift({
// Id: '',
// GName: '全部',
// RecordNum: datasRes.data.data.TotalNum
// })
// let GroupArr = GroupList.value.filter(x=>x.Id==params.GId)
// if(GroupArr.length==0) params.GId = ''
// }
loadingGroup.value = false
} catch (error) {
loadingGroup.value = false
}
}
querySearchGroup()
let GroupArr = props.GroupList.filter(x=>x.Id==params.GId)
if(GroupArr.length==0) params.GId = ''
</script>
\ No newline at end of file
......@@ -2,13 +2,13 @@
<div class="CloudDisk-form row">
<div class="CloudDisk-L">
<div class="row CloudDisk-L-inquire">
<el-input class="grow" v-model="GName"
placeholder="搜索分组名称" @keyup.enter="querySearchGroup"
<el-input style="width: 123px;" v-model="GName"
placeholder="搜索分组名称" clearable @keyup.enter="querySearchGroup"
@input="SearchGroup">
</el-input>
<el-button type="primary" @click="addEditGroup">添加</el-button>
</div>
<div class="CloudDisk-L-Center fz14" v-loading="deleteLoading">
<div class="CloudDisk-L-Center fz14" v-loading="loadingGroup">
<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':'']">
......@@ -102,7 +102,6 @@
v-model:current-page="queryObj.pageIndex"
:page-size="queryObj.pageSize"
small-padding
small="small"
layout="prev, pager, next"
:total="total"
@size-change="handleSizeChange"
......@@ -112,25 +111,12 @@
</div>
</div>
<el-dialog v-model="dialogFormVisible"
:title="dialogTitle" width="340" @close="close">
<div>
<el-input v-model="addEditMsg.GName"
placeholder="请输入分组名称">
</el-input>
<el-input class="q-pt-lg" type="Number" v-model="addEditMsg.SortNum"
placeholder="排序">
</el-input>
</div>
<template #footer>
<div class="dialog-footer">
<el-button @click="dialogFormVisible = false">取消</el-button>
<el-button type="primary" @click="setGroup" :loading="setLoading">
确认
</el-button>
</div>
</template>
</el-dialog>
<NewEditCloudDisk
v-if="dialogFormVisible"
:dialogType="dialogType"
:addEditMsg="addEditMsg"
@close="close"
@success="dialogFormVisible=false,querySearchGroup()"></NewEditCloudDisk>
</template>
<script lang="ts" setup>
import { Plus, Top, Bottom, Delete, Edit } from "@element-plus/icons-vue";
......@@ -143,11 +129,12 @@ import AliyunUpload from '@/utils/upload/aliyun'
import { useUserStore } from "@/store";
import { storeToRefs } from 'pinia'
import { ApiResult } from "@/configs/axios";
import NewEditCloudDisk from './NewEdit'
const { token, userInfo } = storeToRefs(useUserStore())
const dialogFormVisible = ref(false)
const dialogTitle = ref('')
const dialogType = ref(0)
const queryObj = reactive({
pageIndex: 1,
pageSize: 11,
......@@ -167,11 +154,9 @@ const GroupId = ref(''|Number)
const imgDiskRef = ref<any>()
const dataList = ref([] as any)
const loading = ref(false)
const loadingGroup = ref(false)
const GroupList = ref([] as any)
const setLoading = ref(false)
const deleteLoading = ref(false)
const deleteImgLoading = ref<any>(null)
const props = defineProps({
active: '' as any,
show: false as Boolean
......@@ -180,7 +165,8 @@ const props = defineProps({
const GroupObj = ref({} as any)
const emit = defineEmits<{
(event: 'setImg'): void
(event: 'setImg'): void,
(event: 'getImg'): void,
}>()
watch(() => props.active, () => {
......@@ -294,27 +280,14 @@ const deleteImg = (item:any) => {
const addEditGroup = () =>{
dialogFormVisible.value = true
dialogTitle.value = '添加分组名称'
}
const setGroup = async () =>{
if(!addEditMsg.GName) return ElMessage.warning({
showClose: true,
message: `请输入分组名称`,
})
setLoading.value = true
let pageRes = await CloudDiskService.SetPPTCloudGroup(addEditMsg);
if (pageRes.data.resultCode==ApiResult.SUCCESS) {
dialogFormVisible.value = false
querySearchGroup()
}
setLoading.value = false
dialogType.value = 1
}
const close = () =>{
addEditMsg.Id = ''
addEditMsg.GName = ''
addEditMsg.SortNum = null
dialogFormVisible.value = false
}
const EditGroup = (item:any) =>{
......@@ -323,11 +296,11 @@ const EditGroup = (item:any) =>{
addEditMsg.GName = data.GName
addEditMsg.SortNum = data.SortNum
dialogFormVisible.value = true
dialogTitle.value ='编辑分组名称'
dialogType.value = 2
}
// 删除
const deleteGroup = (item:any) => {
const deleteGroup = async (item:any) => {
ElMessageBox.confirm(
`此操作将删除该分组,是否确定?`,
'提示',
......@@ -337,13 +310,13 @@ const deleteGroup = (item:any) => {
type: 'warning',
}
).then(async () => {
loadingGroup.value = true
try {
deleteLoading.value = true
let dataRes = await CloudDiskService.RemovePPTCloudGroup(item.Id)
loadingGroup.value = false
if (dataRes.data.resultCode == 1) {
querySearchGroup()
}
deleteLoading.value = false
} catch (error) {}
}).catch(() => {})
......@@ -353,6 +326,8 @@ const SearchGroup = () => {
if(GName.value=='') querySearchGroup()
}
const querySearchGroup = async () =>{
if(loadingGroup.value) return
loadingGroup.value = true
try {
let datasRes = await CloudDiskService.GetPPTCloudList(GName.value);
if (datasRes.data.resultCode==ApiResult.SUCCESS) {
......@@ -363,9 +338,11 @@ const querySearchGroup = async () =>{
RecordNum: datasRes.data.data.TotalNum
})
}
loadingGroup.value = false
} catch (error) {
loadingGroup.value = false
}
}
const SearchImg = () =>{
if(queryObj.FileName=='') Search()
......@@ -380,6 +357,7 @@ const Search = (item:any=null) =>{
}
const querySearchHandler = async () =>{
if(loading.value) return
loading.value = true
try {
// if(queryObj.pageIndex == 1) dataList.value =[]
......
......@@ -84,7 +84,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 { noDataImg, createOpEditorLink, createSaleCreateLink, managerTemplateLink, createSaleEditorLink } from '@/utils/common'
import { ElLoading, ElMessage, ElMessageBox } from "element-plus";
import { useRouter } from "vue-router";
import UserCard from "@/components/User/UserCard.vue";
......@@ -92,8 +92,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 slidesStore = useSlidesStore()
const {
......@@ -228,9 +226,16 @@ const getTemplate = async (item:any) => {
* 页面跳转
*/
const goToTemplate = (item: any) => {
if((searchData.value.TempId2&&searchData.value.TempId2!=item.TempId)||!searchData.value.TempId2) slidesStore.ClearSlides()
searchData.value.TempId = item.TempId
if((searchData.value.TempId2&&searchData.value.TempId2!=item.TempId)||!searchData.value.TempId2) {
slidesStore.ClearSlides()
}
let url = ''
if(model.value==2) url = createSaleCreateLink(item.TempId,item.TemplateType)
else if(model.value==2&&searchData.value.TempId2) {
let Editor = searchData.value.SalesEditor
url = createSaleEditorLink(Editor.id,item.TempId,Editor.type,Editor.pid,Editor.e,Editor.c)
}
else if(model.value==0 && router.currentRoute.value.params.configId) url = createOpEditorLink(parseInt(router.currentRoute.value.params.configId.toString()),item.TempType,item.TempId)
else if(model.value==1) {
searchData.value.currentMenu = null
......
......@@ -3,6 +3,27 @@ import Api,{ HttpResponse, Result } from './../utils/request';
class CloudDiskService{
static async CloudFileCopy(params:any):Promise<HttpResponse>{
return Api.Post("ppt_CloudFileCopy",params)
}
static async CloudFileMove(params:any):Promise<HttpResponse>{
return Api.Post("ppt_CloudFileMove",params)
}
static async UpdateCloudInfoName(params:any):Promise<HttpResponse>{
return Api.Post("ppt_UpdateCloudInfoName",params)
}
static async GetPPTCloudLists(GName:String):Promise<HttpResponse>{
let msg = {GName}
return Api.Post("ppt_GetPPTCloudList",msg)
}
static async GetPPTCloudInfoPages(params:any):Promise<HttpResponse>{
return Api.Post("ppt_GetPPTCloudInfoPage",params)
}
static async CheckCloudInfo(parms:any):Promise<HttpResponse>{
let msg = parms
return Api.Post("ppt_CheckCloudInfo",msg)
......@@ -15,11 +36,11 @@ class CloudDiskService{
static async GetPPTCloudList(GName:String):Promise<HttpResponse>{
let msg = {GName}
return Api.Post("ppt_GetMyCloudList",msg)//ppt_GetPPTCloudList
return Api.Post("ppt_GetMyCloudList",msg)
}
static async GetPPTCloudInfoPage(params:any):Promise<HttpResponse>{
return Api.Post("ppt_GetMyPPTCloudInfoPage",params)//ppt_GetPPTCloudInfoPage
return Api.Post("ppt_GetMyPPTCloudInfoPage",params)
}
static async RemovePPTCloudGroup(Id:Number):Promise<HttpResponse>{
......
......@@ -7,7 +7,7 @@
<el-tabs v-model="activeName" class="demo-tabs" @tab-click="handleClick">
<el-tab-pane label="平台资料库" name="1">
<template v-if="userInfo.iv||userInfo.it">
<el-row class="q-mb-md">
<el-row>
<el-col :span="6">
<el-select v-model="datas.queryMsg.Type" class="m-2"
@change="SearchHandler()">
......@@ -28,7 +28,7 @@
<!-- <el-input v-model="datas.queryMsg.Name" placeholder="输入关键字快速查找" clearable class="input-with-select q-pl-lg" @change="SearchHandler()"></el-input> -->
</el-col>
</el-row>
<div class="row UploadPicture-box" v-loading="datas.loading">
<div class="row UploadPicture-box q-pt-lg" v-loading="datas.loading">
<div v-for="(item,index) in datas.imgList" class="UploadPicture-list" :key="item.ID">
<div class="UploadPicture-listBox">
<img :src="item.Path" class="" @click="getImgs(item,index)"/>
......@@ -44,7 +44,7 @@
<el-pagination
v-model:current-page="datas.queryMsg.pageIndex"
:page-size="datas.queryMsg.pageSize"
small="small"
small-padding
layout="prev, pager, next"
:total="datas.queryMsg.total"
@size-change="handleSizeChange"
......@@ -377,16 +377,18 @@ getImgList()
}
.UploadPicture-box{
flex-wrap: wrap;
margin-left: -10px;
}
.UploadPicture-list{
width: 150px;
margin: 5px;
width: calc(25% - 10px) !important;
margin-bottom: 10px;
margin-left: 10px;
}
.UploadPicture-listBox{
width: 150px;
height: 0;
position: relative;
padding-bottom: 56.25%;
padding-bottom: 64.96%;
}
.UploadPicture-list img{
width: 100%;
......
......@@ -224,7 +224,6 @@ const journeyAdsDetails = ref<Object>()
const psdVisibleStatus = ref(false)
const { market, model, ConfigId, CoverImg, dataLoading, TempId, TempType, SourceLoading } = storeToRefs(useScreenStore())
const routers = useRouter();
// 返回到首页 type 1 模版列表页 0 销售在线模版页
const goBack = (type:any) =>{
mainBackVisible.value = false
......@@ -241,11 +240,19 @@ const goBack = (type:any) =>{
mainStore.setToolbarState(ToolbarStates.SLIDE_DESIGN)
let path ='/'
const t = useSlidesStore().viewportRatio<0?1:2
searchData.value.SalesEditor = null
if(model.value==0) {
path = `/market/op/${ConfigId.value}/${TempType.value}`
router.push({path})
}else if(model.value==2){
if(type==1) path = `/market/create`
if(type==1) {
searchData.value.SalesEditor = router.currentRoute.value.params
searchData.value.TempId2 = queryObj.value.TempId
marketStore.setMarket(true)
SalesBackStore.setSalesBack(1)
searchData.value.TempId = 0
path = `/market/create/${queryObj.value.TemplateType==1?'trip':'ad'}${searchData.value.currentMenu>=0?'/'+searchData.value.currentMenu:''}`
}
else if(searchData.value.currentMenu>=0) {
path = `/space/${searchData.value.currentMenu}`
searchData.value.currentMenu = null
......@@ -258,13 +265,7 @@ const goBack = (type:any) =>{
}
// 返回是否清空数据
const setNewDatas = (type,i) => {
if(type) {
marketStore.setMarket(true)
if(model.value==2) {
if(searchData.value.TempId) searchData.value.TempId2 = searchData.value.TempId
SalesBackStore.setSalesBack(1)
}
}else {
if(!type) {
searchData.value.TempId2 = 0
searchData.value.sellId = 0
searchData.value.sellTempId = 0
......@@ -272,8 +273,6 @@ const setNewDatas = (type,i) => {
SalesBackStore.setSalesBack(0)
SalesEditorStore.setSalesEditor(0)
}
searchData.value.TempId = 0
// i 1模版权限 0无模版权限
CoverImgStore.setCoverImg(null)
}
// 导入PSD
......
......@@ -522,7 +522,8 @@ const GetTripTemplate = async () =>{
queryObj.value.TempType = dataRes.data.data.TempType
queryObj.value.TemplateType = dataRes.data.data.TemplateType
queryObj.value.AuthType = dataRes.data.data.AuthType
queryObj.value.Title = dataRes.data.data.Title
if(queryObj.value.Width){
VIEWPORT_SIZE.Value = queryObj.value.Height
VIEWPORT_VER_SIZE.Value = queryObj.value.Width
......@@ -943,7 +944,6 @@ const contextmenusThumbnailItem = (): ContextmenuItem[] => {
},
]
}
if(searchData.value.sellId&&!searchData.value.TempId) sellGetTripTemplate()
if(!viewSlideShow) {
GetTripTemplate()
......
......@@ -237,7 +237,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, createSaleEditorLink } from '@/utils/common'
import { ElLoading, ElMessage, ElMessageBox } from "element-plus";
import { useRouter } from "vue-router";
import UserCard from "@/components/User/UserCard.vue";
......@@ -428,9 +428,16 @@ const getTemplate = (item:any,index:Number) => {
* 页面跳转
*/
const goToTemplate = (item: any) => {
if((searchData.value.TempId2&&searchData.value.TempId2!=item.TempId)||!searchData.value.TempId2) slidesStore.ClearSlides()
searchData.value.TempId = item.TempId
if((searchData.value.TempId2&&searchData.value.TempId2!=item.TempId)||!searchData.value.TempId2) {
slidesStore.ClearSlides()
}
let url = ''
if(model.value==2) url = createSaleCreateLink(item.TempId,item.TemplateType)
if(model.value==2&&!searchData.value.TempId2) url = createSaleCreateLink(item.TempId,item.TemplateType)
else if(model.value==2&&searchData.value.TempId2) {
let Editor = searchData.value.SalesEditor
url = createSaleEditorLink(Editor.id,item.TempId,Editor.type,Editor.pid,Editor.e,Editor.c)
}
else if(model.value==0 && router.currentRoute.value.params.configId) url = createOpEditorLink(parseInt(router.currentRoute.value.params.configId.toString()),item.TempType,item.TempId)
else if(model.value==1) url = managerTemplateLink(item.TempId,item.TemplateType)
if(url!='') {
......
This diff is collapsed.
......@@ -30,6 +30,11 @@
<div class="tabs-items">
<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>
......@@ -37,6 +42,7 @@
<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">
......@@ -48,6 +54,7 @@ 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';
......
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