Commit 45740fd7 authored by 罗超's avatar 罗超

提交部分的路由改造页面

parent 8097de2f
...@@ -42,7 +42,6 @@ declare module 'vue' { ...@@ -42,7 +42,6 @@ declare module 'vue' {
ElOption: typeof import('element-plus/es')['ElOption'] ElOption: typeof import('element-plus/es')['ElOption']
ElPagination: typeof import('element-plus/es')['ElPagination'] ElPagination: typeof import('element-plus/es')['ElPagination']
ElPopover: typeof import('element-plus/es')['ElPopover'] ElPopover: typeof import('element-plus/es')['ElPopover']
ElResult: typeof import('element-plus/es')['ElResult']
ElRow: typeof import('element-plus/es')['ElRow'] ElRow: typeof import('element-plus/es')['ElRow']
ElScrollbar: typeof import('element-plus/es')['ElScrollbar'] ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
ElSelect: typeof import('element-plus/es')['ElSelect'] ElSelect: typeof import('element-plus/es')['ElSelect']
......
...@@ -59,9 +59,9 @@ ...@@ -59,9 +59,9 @@
"svg-pathdata": "^6.0.3", "svg-pathdata": "^6.0.3",
"tinycolor2": "^1.6.0", "tinycolor2": "^1.6.0",
"tippy.js": "^6.3.7", "tippy.js": "^6.3.7",
"vue": "^3.3.7", "vue": "^3.4.21",
"vue-konva": "^3.0.2", "vue-konva": "^3.0.2",
"vue-router": "^4.2.5", "vue-router": "^4.0.13",
"vue3-leaderline": "^1.2.11", "vue3-leaderline": "^1.2.11",
"vuedraggable": "^4.1.0" "vuedraggable": "^4.1.0"
}, },
......
<template> <template>
<div v-if="isFinish" style="height: 100vh;background: rgb(243, 246, 251);"> <router-view/>
<!-- <Screen v-if="screening" /> -->
<PreviewCustomSlider v-if="model==448963"></PreviewCustomSlider>
<Market v-else-if="(market&&model!=2&&!query().ViewSlideshow)||(market&&SalesEditor>0&&!query().ViewSlideshow)"></Market>
<Workspace v-else-if="model==2&&SalesEditor==0"/>
<Editor v-else-if="_isPC" />
<Mobile v-else />
</div>
<el-result v-if="loading" title="404" :sub-title="ShareTips">
<template #icon></template>
<template #extra></template>
</el-result>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { ApiResult } from '@/configs/axios'; import { onMounted, ref,provide } from 'vue';
import { onMounted,ref,provide } from 'vue' import { deleteDiscardedDB } from './utils/database';
import { storeToRefs } from 'pinia' import { useFontStore, useMainStore, useSnapshotStore } from '@/store'
import { useScreenStore, useMainStore, useSnapshotStore, import { LOCALSTORAGE_KEY_DISCARDED_DB } from '@/configs/storage';
useFontStore, useSellTemplateStore, useSlidesStore } from '@/store' import { storeToRefs } from 'pinia';
import { LOCALSTORAGE_KEY_DISCARDED_DB } from '@/configs/storage' import { injectKeyTemplate } from './types/injectKey';
import { deleteDiscardedDB } from '@/utils/database'
import { isPC, query } from './utils/common'
import { userStore } from './store/user'
import { injectKeyTemplate } from '@/types/injectKey'
import ConfigService from '@/services/ConfigService'
import { domainManager } from '@/utils/domainManager'
import { enterFullscreen, exitFullscreen, isFullscreen } from '@/utils/fullscreen'
import { VIEWPORT_SIZE, VIEWPORT_VER_SIZE } from '@/configs/canvas'
import Editor from './views/Editor/index.vue' const snapshotStore = useSnapshotStore()
import Screen from './views/Screen/index.vue' const mainStore = useMainStore()
import Mobile from './views/Mobile/index.vue' const { databaseId } = storeToRefs(mainStore)
import Market from './views/Market/Index.vue'
import PreviewCustomSlider from './views/Preview/PreviewCustomSlider.vue'
import SellTemplate from './views/SellTemplate/index.vue'
import Workspace from './views/SellTemplate/Workspace.vue'
import { ElMessage, ElMessageBox } from 'element-plus'
const searchData = ref({} as any) const searchData = ref({} as any)
provide(injectKeyTemplate,searchData) provide(injectKeyTemplate,searchData)
const autoSave = ref(0) const autoSave = ref(0)
provide("SellTravelSave",autoSave) provide("SellTravelSave",autoSave)
const isFinish = ref(false)
const loading = ref(false)
const ShareTips = ref('')
const _isPC = isPC()
const mainStore = useMainStore()
const snapshotStore = useSnapshotStore()
const modelStore = useScreenStore()
const ConfigIdStore = useScreenStore()
const marketStore = useScreenStore()
const isModelStore = useScreenStore()
const TempIdStore = useScreenStore()
const ScreenStore = useScreenStore()
const SellTemplateStore = useSellTemplateStore()
const slidesStore = useSlidesStore()
const { databaseId } = storeToRefs(mainStore)
const { screening, market, model, ConfigId } = storeToRefs(useScreenStore())
const { userInfo } = storeToRefs(userStore())
const { SalesEditor, SalesTripId } = storeToRefs(useSellTemplateStore())
const { slides } = storeToRefs(useSlidesStore())
const { enterScreeningFromStart } = storeToRefs(useScreenStore())
if (process.env.NODE_ENV === 'production') {
window.onbeforeunload = () => false
}
const userLoginHandler = async ()=>{
let param = query()
let userId = 0
let ConfigId = 0 // 9117
let model = 0
let SalesTripId = ''
await useFontStore().loadAllFonts()
if(param.uid) userId=parseInt(param.uid)
if(param.ConfigId) ConfigId=parseInt(param.ConfigId)
if(param.model) model=parseInt(param.model)
if(param.SalesTripId) {
SalesTripId = param.SalesTripId
SellTemplateStore.setSalesTripId(SalesTripId)
try {
await sellShareTemplate()
} catch (error) {}
}
ConfigIdStore.setConfigId(ConfigId)
modelStore.setModel(model)
try {
if(param.uid) await userStore().setUserLoginAsync(userId)
if(ConfigId>0&&model!=2) await GetTripConfig(ConfigId)
} catch (error) {}
if(userId>0)isFinish.value=true
if(param.ViewSlideshow) {
searchData.value.ViewSlideshow = param.ViewSlideshow
try {
await sellHistoryTripTemplate(param.sellId,param.LogId)
} catch (error) {}
}
if(!ConfigId&&!model&&(param.SalesTripId&&param.SalesTripId=='')) ElMessageBox.confirm(
'当前没有权限进行任何操作,请联系管理员!',
'提示',
{
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}
).then(() => {})
.catch(() => {})
}
onMounted(async () => { onMounted(async () => {
await deleteDiscardedDB() await deleteDiscardedDB()
snapshotStore.initSnapshotDatabase() snapshotStore.initSnapshotDatabase()
mainStore.setAvailableFonts() mainStore.setAvailableFonts()
}) })
if (process.env.NODE_ENV === 'production') {
// 销售历史版本模版数据 window.onbeforeunload = () => false
const sellHistoryTripTemplate = async (sellId:any,LogId:any) => {
const loadingObj = ElLoading.service({
text:'正在渲染数据',
lock:true
})
try {
let queryMsg
let dataRes
if(!LogId){
queryMsg = {
Id: sellId,
Status: searchData.value.ViewSlideshow==1?1:0
}
// 行程广告浏览记录
if(queryMsg.Status==0) await ConfigService.SetTripBrowse({FileId: sellId});
dataRes = await ConfigService.sellGetTemplateDetails(queryMsg);
}else{
queryMsg = {
LogId: LogId,
FileId: sellId,
}
dataRes = await ConfigService.GetHistoryInfo(queryMsg);
}
if (dataRes.data.resultCode==ApiResult.SUCCESS) {
loadingObj.close()
loading.value = false
isFinish.value=true
let dataObj = dataRes.data.data
let viewportRatios = 0
if(dataObj.TemplateType!=2) {
viewportRatios = 1.414
if(dataObj.TempType==1) viewportRatios = 0.7069
}
if(dataObj.TemplateType==2&&dataObj.Width&&dataObj.Height) {
viewportRatios = dataObj.Height/dataObj.Width
}
if(dataObj.Width&&dataObj.Height) {
VIEWPORT_SIZE.Value = dataObj.Height
VIEWPORT_VER_SIZE.Value = dataObj.Width
}else{
VIEWPORT_SIZE.Value = 1754
VIEWPORT_VER_SIZE.Value = 1240
}
slidesStore.setViewportRatio(viewportRatios)
let SlidesData = JSON.parse(dataObj.TempData)
let newSlides = []
await SlidesData.forEach((x,i)=>{
newSlides.push(x)
})
slidesStore.setSlides(newSlides)
ScreenStore.setScreening(true)
enterScreeningFromStart
slidesStore.updateSlideIndex(0)
}else{
loading.value = true
ShareTips.value = dataRes.data.message
loadingObj.close()
}
} catch (error) {
}
}
// 销售分享模版数据
const sellShareTemplate = async () =>{
const loadingObj = ElLoading.service({
text:'正在渲染数据',
lock:true
})
try {
let queryMsg = {
Code: SalesTripId.value
}
const slidesData = slides.value
let dataRes = await ConfigService.GetTripOtherByCode(queryMsg);
if (dataRes.data.resultCode==ApiResult.SUCCESS) {
loadingObj.close()
loading.value = false
isFinish.value=true
let dataObj = dataRes.data.data
let viewportRatios = 0
if(dataObj.TemplateType!=2) {
viewportRatios = 1.414
if(dataObj.TempType==1) viewportRatios = 0.7069
}
if(dataObj.TemplateType==2&&dataObj.Width&&dataObj.Height) {
viewportRatios = dataObj.Height/dataObj.Width
}
if(dataObj.Width&&dataObj.Height) {
VIEWPORT_SIZE.Value = dataObj.Height
VIEWPORT_VER_SIZE.Value = dataObj.Width
}else{
VIEWPORT_SIZE.Value = 1754
VIEWPORT_VER_SIZE.Value = 1240
}
slidesStore.setViewportRatio(viewportRatio)
let SlidesData = JSON.parse(dataObj.TempData)
let newSlides = []
await SlidesData.forEach((x,i)=>{
newSlides.push(x)
})
slidesStore.setSlides(newSlides)
slidesStore.updateSlideIndex(0)
ScreenStore.setScreening(true)
enterScreeningFromStart
}else{
loading.value = true
ShareTips.value = dataRes.data.message
loadingObj.close()
}
} catch (error) {
loading.value = true
ShareTips.value = error
loadingObj.close()
}
}
/**
* 根据团期配置编号获取行程详情
*/
const GetTripConfig = async (ConfigId) =>{
try {
let queryMsg = {
ConfigId: ConfigId
}
let datasRes = await ConfigService.triptemplateGetTripConfig(queryMsg);
if (datasRes.data.resultCode==ApiResult.SUCCESS && datasRes.data.data) {
let dataObj = datasRes.data.data
if(dataObj.TempId==0){
return window.parent.postMessage(`暂无行程数据`, `${domainManager().notificationUrl}`);
}
isModelStore.setIsModel(true)
marketStore.setMarket(!market)
TempIdStore.setTempId(dataObj.TempId)
}
} catch (error) {
}
} }
userLoginHandler()
// 应用注销时向 localStorage 中记录下本次 indexedDB 的数据库ID,用于之后清除数据库 // 应用注销时向 localStorage 中记录下本次 indexedDB 的数据库ID,用于之后清除数据库
window.addEventListener('unload', () => { window.addEventListener('unload', () => {
const discardedDB = localStorage.getItem(LOCALSTORAGE_KEY_DISCARDED_DB) const discardedDB = localStorage.getItem(LOCALSTORAGE_KEY_DISCARDED_DB)
...@@ -270,13 +37,12 @@ window.addEventListener('unload', () => { ...@@ -270,13 +37,12 @@ window.addEventListener('unload', () => {
const newDiscardedDB = JSON.stringify(discardedDBList) const newDiscardedDB = JSON.stringify(discardedDBList)
localStorage.setItem(LOCALSTORAGE_KEY_DISCARDED_DB, newDiscardedDB) localStorage.setItem(LOCALSTORAGE_KEY_DISCARDED_DB, newDiscardedDB)
}) })
useFontStore().loadAllFonts()
</script> </script>
<style lang="scss"> <style lang="scss">
@import url('@/assets/styles/common.css');
#app { #app {
height: 100%; height: 100%;
}
.el-overlay{
} }
</style> </style>
\ No newline at end of file
...@@ -18,17 +18,19 @@ import Icon from '@/plugins/icon' ...@@ -18,17 +18,19 @@ import Icon from '@/plugins/icon'
import Directive from '@/plugins/directive' import Directive from '@/plugins/directive'
import * as ElementPlusIconsVue from '@element-plus/icons-vue' import * as ElementPlusIconsVue from '@element-plus/icons-vue'
import VueKonva from 'vue-konva'; import VueKonva from 'vue-konva';
import router from './router'
const app = createApp(App) const app = createApp(App)
app.use(router)
const pinia = createPinia() const pinia = createPinia()
pinia.use(piniaPluginPersistedstate) pinia.use(piniaPluginPersistedstate)
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
app.component(key, component)
}
app.use(Icon) app.use(Icon)
app.use(Directive) app.use(Directive)
app.use(VueKonva) app.use(VueKonva)
app.use(pinia) app.use(pinia)
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
app.component(key, component)
}
app.mount('#app') app.mount('#app')
import { createRouter, createWebHistory } from 'vue-router'
import routes from './router'
import { userStore } from '@/store/user';
import { ElLoading } from 'element-plus';
const router = createRouter({
history: createWebHistory(process.env.BASE_URL),
routes
})
const whiteList = ['/autoLogin','/login','/notfound']
const managerMenu = ['/market','/editor_admin']
let loadingInstance:any = null
router.beforeEach((to:any, from:any, next:any) => {
const user = userStore()
if(!loadingInstance){
loadingInstance = ElLoading.service({
fullscreen:true,
lock:true
})
}
if (whiteList.includes(to.path) || user.getUserToken!='') {
if(managerMenu.includes(to.path) && user.getUser.IsEditTripTemplate!=1){
next('/notfound');
}
if (to.meta.title) {
document.title = to.meta.title
}
next();
} else {
if(to.query && to.query.uid){
next(`/autoLogin?forword=${encodeURIComponent(to.fullPath)}`)
}
next('/notfound');
}
});
router.afterEach(() => {
if (loadingInstance) {
loadingInstance.close()
loadingInstance = null
}
});
export default router
\ No newline at end of file
import { RouteRecordRaw } from 'vue-router'
const routes: RouteRecordRaw[] = [
{
path: '/',
component: () => import('@/views/Index.vue'),
meta:{
title:'个人空间'
}
},
{
path: '/notfound',
component: () => import('@/views/ErrorNotFound.vue'),
meta:{
title:'Oops! 出错了'
}
},
{
path: '/autoLogin',
component: () => import('@/views/Auth/AutoLogin.vue'),
meta:{
title:'自动登录中...'
}
},
{
path: '/market',
component: () => import('@/views/Market/Index.vue'),
meta:{
title:'模板管理'
}
},
{
path: '/market/create',
component: () => import('@/views/Market/Index.vue'),
meta:{
title:'选择模板进行创作'
}
},
{
path: '/market/create/ad',
component: () => import('@/views/Market/Index.vue'),
meta:{
title:'选择广告模板'
}
},
{
path: '/market/create/trip',
component: () => import('@/views/Market/Index.vue'),
meta:{
title:'选择行程模板'
}
},
{
path: '/editor/:id(\\d+)/:tid(\\d+)/:type(\\d+)/:pid(\\d+)/e/:e(\\d+)/c/:c(\\d+)',
component: () => import('@/views/Editor/Editor.vue'),
meta:{
title:'编辑'
}
},
{
path: '/editor/:tid(\\d+)/:type(\\d+)',
component: () => import('@/views/Editor/Editor.vue'),
meta:{
title:'新建'
}
}
];
export default routes;
\ No newline at end of file
import UserService from '@/services/UserService'; import UserService from '@/services/UserService';
import { defineStore } from 'pinia'; import { defineStore } from 'pinia';
import { StorageLike } from 'pinia-plugin-persistedstate';
import SecureLS from 'secure-ls';
const ls = new SecureLS({
isCompression: false,
encryptionSecret: '38c31684-d00d-30dc-82e0-fad9eec46d1d',
})
const st: StorageLike = {
setItem(key: string, value: string) {
ls.set(key, value);
},
getItem(key: string): string | null {
return ls.get(key);
},
}
export const userStore = defineStore('user', { export const userStore = defineStore('user', {
state:()=>({ state:()=>({
token:'' as string, token:'' as string,
...@@ -21,8 +35,13 @@ export const userStore = defineStore('user', { ...@@ -21,8 +35,13 @@ export const userStore = defineStore('user', {
if (response.data.resultCode == 1) { if (response.data.resultCode == 1) {
this.token = response.data.data.token this.token = response.data.data.token
this.userInfo = response.data.data this.userInfo = response.data.data
return true
} }
} catch (error) {} } catch (error) {}
return false
} }
},
persist: {
storage: st,
} }
}); });
\ No newline at end of file
import { number } from '@amcharts/amcharts4/core'
import { padStart } from 'lodash' import { padStart } from 'lodash'
/** /**
...@@ -10,6 +9,16 @@ export const fillDigit = (digit: number, len: number) => { ...@@ -10,6 +9,16 @@ export const fillDigit = (digit: number, len: number) => {
return padStart('' + digit, len, '0') return padStart('' + digit, len, '0')
} }
export const openNewBlank = (path:string) => {
if(path!=''){
const url = `${window.location.origin}${path}`
window.open(url, '_blank')
}
}
export const createSaleEditorLink = (id:number,tid:number,type:1|2,pid:number,ep:0|1,cp:0|1) =>{
return `/editor/${id}/${tid}/${type}/${pid}/e/${ep}/c/${cp}`
}
/** /**
* 判断设备 * 判断设备
*/ */
......
<template>
<div class="full-height column flex-center items-center" v-if="!result">
<el-empty :image-size="200" description="抱歉,你的账户信息不存在" />
</div>
</template>
<script setup lang="ts">
import { userStore } from '@/store/user';
import { query } from '@/utils/common';
import { ElLoading } from 'element-plus';
import { ref } from 'vue';
import { useRouter } from 'vue-router';
const router = useRouter();
const forword = decodeURIComponent(router.currentRoute.value.query.forword)
const param = query(forword)
const result = ref(true)
const userLoginHandler = async ()=>{
const loading = ElLoading.service({
fullscreen:true,
lock:true
})
if(param.uid){
let response = await userStore().setUserLoginAsync(parseInt(param.uid))
if(response){
router.push({
path: forword
})
return
}
}
result.value=false
}
userLoginHandler()
</script>
<style lang="scss">
</style>
\ No newline at end of file
<template>
<EditorHome v-if="showEditor"></EditorHome>
</template>
<script lang="ts" setup>
import { inject, ref } from 'vue';
import EditorHome from './index.vue'
import { injectKeyTemplate } from "@/types/injectKey"
import { useSellTemplateStore, useScreenStore, useSlidesStore } from "@/store";
import { useRouter } from 'vue-router';
const router = useRouter()
const currentRoute = router.currentRoute.value
const params = currentRoute.params
const searchData = ref({} as any)
searchData.value = inject(injectKeyTemplate)
const SalesEditorStore = useSellTemplateStore()
const showEditor = ref(false)
const initSellEditor=()=>{
let list = [
{
id: "test-slide-1",
pageType: 0,
elements: [],
background: {
type: "solid",
color: "#ffffff",
},
},
];
useSlidesStore().setSlides(list)
useScreenStore().setModel(2)
searchData.value.sellId = parseInt(params.id.toString())
searchData.value.sellTempId = parseInt(params.tid.toString())
searchData.value.TemplateType = parseInt(params.type.toString())
searchData.value.ParentFileId = parseInt(params.pid.toString())
//@TODO:注意,这个地方应该替换为接口验证
searchData.value.noExportPermission = params.e.toString()!='1'
searchData.value.noCopyPermission = params.c.toString()!='1'
SalesEditorStore.setSalesEditor(2);
showEditor.value=true
}
const init =()=>{
//销售修改行程
if(currentRoute.path.includes('/editor/') && params.id) initSellEditor()
else if(currentRoute.path.includes('/editor/')) initSellEditor()
}
init()
</script>
\ No newline at end of file
<template> <template>
<Screen v-if="screening" /> <Screen v-if="screening" />
<div class="pptist-editor" v-show="model!=3&&!screening&&!query().ViewSlideshow"> <div class="pptist-editor" v-show="model!=3&&!screening&&!query().ViewSlideshow">
<EditorHeader class="layout-header" /> <EditorHeader class="layout-header" />
<div class="layout-content"> <div class="layout-content">
......
<template>
<div class="full-height column flex-center items-center" style="height: 100vh;">
<el-empty :image-size="200" description="没有找到页面" />
</div>
</template>
\ No newline at end of file
<template>
<div v-if="isFinish" style="height: 100vh;background: rgb(243, 246, 251);">
<!-- <Screen v-if="screening" /> -->
<PreviewCustomSlider v-if="model==448963"></PreviewCustomSlider>
<Market v-else-if="(market&&model!=2&&!query().ViewSlideshow)||(market&&SalesEditor>0&&!query().ViewSlideshow)"></Market>
<Workspace v-else-if="model==2&&SalesEditor==0"/>
<Editor v-else-if="_isPC" />
<Mobile v-else />
</div>
<el-result v-if="loading" title="404" :sub-title="ShareTips">
<template #icon></template>
<template #extra></template>
</el-result>
</template>
<script lang="ts" setup>
import { ApiResult } from '@/configs/axios';
import { onMounted,ref,provide } from 'vue'
import { storeToRefs } from 'pinia'
import { useScreenStore, useMainStore, useSnapshotStore,
useFontStore, useSellTemplateStore, useSlidesStore } from '@/store'
import { LOCALSTORAGE_KEY_DISCARDED_DB } from '@/configs/storage'
import { deleteDiscardedDB } from '@/utils/database'
import { isPC, query } from '@/utils/common'
import { userStore } from '@/store/user'
import { injectKeyTemplate } from '@/types/injectKey'
import ConfigService from '@/services/ConfigService'
import { domainManager } from '@/utils/domainManager'
import { enterFullscreen, exitFullscreen, isFullscreen } from '@/utils/fullscreen'
import { VIEWPORT_SIZE, VIEWPORT_VER_SIZE } from '@/configs/canvas'
import Editor from './Editor/index.vue'
import Screen from './Screen/index.vue'
import Mobile from './Mobile/index.vue'
import Market from './Market/Index.vue'
import PreviewCustomSlider from './Preview/PreviewCustomSlider.vue'
import SellTemplate from './SellTemplate/index.vue'
import Workspace from './SellTemplate/Workspace.vue'
import { ElMessage, ElMessageBox } from 'element-plus'
const searchData = ref({} as any)
provide(injectKeyTemplate,searchData)
const autoSave = ref(0)
provide("SellTravelSave",autoSave)
const isFinish = ref(false)
const loading = ref(false)
const ShareTips = ref('')
const _isPC = isPC()
const mainStore = useMainStore()
const snapshotStore = useSnapshotStore()
const modelStore = useScreenStore()
const ConfigIdStore = useScreenStore()
const marketStore = useScreenStore()
const isModelStore = useScreenStore()
const TempIdStore = useScreenStore()
const ScreenStore = useScreenStore()
const SellTemplateStore = useSellTemplateStore()
const slidesStore = useSlidesStore()
const { databaseId } = storeToRefs(mainStore)
const { screening, market, model, ConfigId } = storeToRefs(useScreenStore())
const { userInfo } = storeToRefs(userStore())
const { SalesEditor, SalesTripId } = storeToRefs(useSellTemplateStore())
const { slides } = storeToRefs(useSlidesStore())
const { enterScreeningFromStart } = storeToRefs(useScreenStore())
const userLoginHandler = async ()=>{
let param = query()
let userId = 0
let ConfigId = 0 // 9117
let model = 0
let SalesTripId = ''
await useFontStore().loadAllFonts()
if(param.uid) userId=parseInt(param.uid)
if(param.ConfigId) ConfigId=parseInt(param.ConfigId)
if(param.model) model=parseInt(param.model)
if(param.SalesTripId) {
SalesTripId = param.SalesTripId
SellTemplateStore.setSalesTripId(SalesTripId)
try {
await sellShareTemplate()
} catch (error) {}
}
ConfigIdStore.setConfigId(ConfigId)
modelStore.setModel(model)
try {
if(param.uid) await userStore().setUserLoginAsync(userId)
if(ConfigId>0&&model!=2) await GetTripConfig(ConfigId)
} catch (error) {}
if(userId>0)isFinish.value=true
if(param.ViewSlideshow) {
searchData.value.ViewSlideshow = param.ViewSlideshow
try {
await sellHistoryTripTemplate(param.sellId,param.LogId)
} catch (error) {}
}
if(!ConfigId&&!model&&(param.SalesTripId&&param.SalesTripId=='')) ElMessageBox.confirm(
'当前没有权限进行任何操作,请联系管理员!',
'提示',
{
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}
).then(() => {})
.catch(() => {})
}
// 销售历史版本模版数据
const sellHistoryTripTemplate = async (sellId:any,LogId:any) => {
const loadingObj = ElLoading.service({
text:'正在渲染数据',
lock:true
})
try {
let queryMsg
let dataRes
if(!LogId){
queryMsg = {
Id: sellId,
Status: searchData.value.ViewSlideshow==1?1:0
}
// 行程广告浏览记录
if(queryMsg.Status==0) await ConfigService.SetTripBrowse({FileId: sellId});
dataRes = await ConfigService.sellGetTemplateDetails(queryMsg);
}else{
queryMsg = {
LogId: LogId,
FileId: sellId,
}
dataRes = await ConfigService.GetHistoryInfo(queryMsg);
}
if (dataRes.data.resultCode==ApiResult.SUCCESS) {
loadingObj.close()
loading.value = false
isFinish.value=true
let dataObj = dataRes.data.data
let viewportRatios = 0
if(dataObj.TemplateType!=2) {
viewportRatios = 1.414
if(dataObj.TempType==1) viewportRatios = 0.7069
}
if(dataObj.TemplateType==2&&dataObj.Width&&dataObj.Height) {
viewportRatios = dataObj.Height/dataObj.Width
}
if(dataObj.Width&&dataObj.Height) {
VIEWPORT_SIZE.Value = dataObj.Height
VIEWPORT_VER_SIZE.Value = dataObj.Width
}else{
VIEWPORT_SIZE.Value = 1754
VIEWPORT_VER_SIZE.Value = 1240
}
slidesStore.setViewportRatio(viewportRatios)
let SlidesData = JSON.parse(dataObj.TempData)
let newSlides = []
await SlidesData.forEach((x,i)=>{
newSlides.push(x)
})
slidesStore.setSlides(newSlides)
ScreenStore.setScreening(true)
enterScreeningFromStart
slidesStore.updateSlideIndex(0)
}else{
loading.value = true
ShareTips.value = dataRes.data.message
loadingObj.close()
}
} catch (error) {
}
}
// 销售分享模版数据
const sellShareTemplate = async () =>{
const loadingObj = ElLoading.service({
text:'正在渲染数据',
lock:true
})
try {
let queryMsg = {
Code: SalesTripId.value
}
const slidesData = slides.value
let dataRes = await ConfigService.GetTripOtherByCode(queryMsg);
if (dataRes.data.resultCode==ApiResult.SUCCESS) {
loadingObj.close()
loading.value = false
isFinish.value=true
let dataObj = dataRes.data.data
let viewportRatios = 0
if(dataObj.TemplateType!=2) {
viewportRatios = 1.414
if(dataObj.TempType==1) viewportRatios = 0.7069
}
if(dataObj.TemplateType==2&&dataObj.Width&&dataObj.Height) {
viewportRatios = dataObj.Height/dataObj.Width
}
if(dataObj.Width&&dataObj.Height) {
VIEWPORT_SIZE.Value = dataObj.Height
VIEWPORT_VER_SIZE.Value = dataObj.Width
}else{
VIEWPORT_SIZE.Value = 1754
VIEWPORT_VER_SIZE.Value = 1240
}
slidesStore.setViewportRatio(viewportRatio)
let SlidesData = JSON.parse(dataObj.TempData)
let newSlides = []
await SlidesData.forEach((x,i)=>{
newSlides.push(x)
})
slidesStore.setSlides(newSlides)
slidesStore.updateSlideIndex(0)
ScreenStore.setScreening(true)
enterScreeningFromStart
}else{
loading.value = true
ShareTips.value = dataRes.data.message
loadingObj.close()
}
} catch (error) {
loading.value = true
ShareTips.value = error
loadingObj.close()
}
}
/**
* 根据团期配置编号获取行程详情
*/
const GetTripConfig = async (ConfigId) =>{
try {
let queryMsg = {
ConfigId: ConfigId
}
let datasRes = await ConfigService.triptemplateGetTripConfig(queryMsg);
if (datasRes.data.resultCode==ApiResult.SUCCESS && datasRes.data.data) {
let dataObj = datasRes.data.data
if(dataObj.TempId==0){
return window.parent.postMessage(`暂无行程数据`, `${domainManager().notificationUrl}`);
}
isModelStore.setIsModel(true)
marketStore.setMarket(!market)
TempIdStore.setTempId(dataObj.TempId)
}
} catch (error) {
}
}
userLoginHandler()
</script>
<style lang="scss">
#app {
height: 100%;
}
.el-overlay{
}
</style>
\ No newline at end of file
<template>
<div style="height: 100vh;background: rgb(243, 246, 251);">
<Workspace />
</div>
</template>
<script lang="ts" setup>
import Workspace from './SellTemplate/Workspace.vue';
</script>
<style lang="scss">
</style>
\ No newline at end of file
This diff is collapsed.
...@@ -17,35 +17,6 @@ ...@@ -17,35 +17,6 @@
</el-icon> </el-icon>
</div> </div>
</div> </div>
<div>
<!--
<el-dropdown v-if="datas.selectedDatas.length>0" trigger="click" class="q-px-md">
<el-button>
<el-icon><CopyDocument /></el-icon>
<span class="">批量操作</span>
</el-button>
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item icon="Expand" @click="MoveFile(0)">移动至</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
<el-dropdown trigger="click">
<el-button>新建</el-button>
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item
@click="sellAdd(1)"
>新建行程</el-dropdown-item
>
<el-dropdown-item
@click="sellAdd(3)"
>建广告图</el-dropdown-item
>
</el-dropdown-menu>
</template>
</el-dropdown> -->
</div>
</div> </div>
<div class="col full-width q-ml-md"> <div class="col full-width q-ml-md">
<journeyAdsList <journeyAdsList
...@@ -61,39 +32,20 @@ ...@@ -61,39 +32,20 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ApiResult } from '@/configs/axios'; import { ApiResult } from '@/configs/axios';
import { ref, reactive, provide, watch, inject, onMounted } from "vue"; import { ref, reactive, inject, onMounted } from "vue";
import { ElLoading, ElMessage, ElMessageBox } from "element-plus"; import { ElMessage } from "element-plus";
import { MoreFilled, Edit, ArrowLeft,CopyDocument,DCaret,CaretTop,CaretBottom } from "@element-plus/icons-vue";
import ConfigService from "@/services/ConfigService"; import ConfigService from "@/services/ConfigService";
import FolderService from "@/services/FolderService";
import { injectKeyTemplate } from "@/types/injectKey"; import { injectKeyTemplate } from "@/types/injectKey";
import { } from "@/utils/common";
import { useSellTemplateStore, useScreenStore } from "@/store";
import TreeFile from "./components/TreeFile.vue";
import breadPeeling from "./components/breadPeeling.vue";
import journeyAdsList from "./components/journeyAdsList.vue"; import journeyAdsList from "./components/journeyAdsList.vue";
const SalesEditorStore = useSellTemplateStore();
const marketStore = useScreenStore();
const props = defineProps({
currentMenu: {
type: Number,
default: 3,
},
});
const PopoverVisibleControls = ref(false);
const isIndeterminate = ref(false);
const dataList = ref([] as Array<any>); const dataList = ref([] as Array<any>);
const NewDataList = ref([] as Array<any>);
const searchData = ref({} as any); const searchData = ref({} as any);
searchData.value = inject(injectKeyTemplate); searchData.value = inject(injectKeyTemplate)
const deleteLoading = ref<any>(null);
const removeShareLoading = ref<any>(null);
const RefreshLoading = ref(false) const RefreshLoading = ref(false)
const currentRootDom = ref() const currentRootDom = ref()
const datas = reactive({ const datas = reactive({
selectedDatas: [] as Array, selectedDatas: [] as any[],
selectAll: false as any, selectAll: false as any,
setFileList: [] as any, setFileList: [] as any,
}); });
...@@ -104,26 +56,15 @@ ...@@ -104,26 +56,15 @@
pageCount: 0, //总页数 pageCount: 0, //总页数
FileType: 0, FileType: 0,
OrderByType: 2,//1 升序 2倒序 OrderByType: 2,//1 升序 2倒序
}); })
const editObj = reactive({}); const loading = ref(false as any)
const loading = ref(false as any);
const SellTemplateRef = ref<any>();
const UpdateData = (obj:any) =>{
dataList.value = obj.list
}
const success = () => { const success = () => {
datas.selectAll = false; datas.selectAll = false;
datas.selectedDatas = []; datas.selectedDatas = [];
refreshHandler() refreshHandler()
} }
const sellAdd = (type:number) =>{
searchData.value.sellId = 0
searchData.value.sellTempId = 0
SalesEditorStore.setSalesEditor(type)
marketStore.setMarket(true)
}
// 移动到文件夹 // 移动到文件夹
const MoveFile = (item:any) => { const MoveFile = (item:any) => {
datas.setFileList = [] datas.setFileList = []
...@@ -143,20 +84,6 @@ ...@@ -143,20 +84,6 @@
isTreeFile.value = true isTreeFile.value = true
} }
// 重命名
const OffEdit = () => {
for (let i = 0; i < dataList.value.length; i++) {
dataList.value[i].editTitle = false;
if (
editObj.value &&
editObj.value.FileId &&
dataList.value[i].FileId == editObj.value.FileId
) {
dataList.value[i].FileName = editObj.value.FileName;
}
}
};
const querySearchHandler = async () => { const querySearchHandler = async () => {
loading.value = true; loading.value = true;
try { try {
...@@ -186,20 +113,6 @@ ...@@ -186,20 +113,6 @@
RefreshLoading.value = false; RefreshLoading.value = false;
} }
}; };
const scrollingHandler = () => {
if (SellTemplateRef.value && !loading.value) {
let maxHeight =
SellTemplateRef.value.scrollHeight - SellTemplateRef.value.offsetHeight;
let scrollTop = SellTemplateRef.value.scrollTop;
if (
(maxHeight - scrollTop == 0 || maxHeight - scrollTop < 1) &&
queryObj.pageCount > queryObj.pageIndex
) {
queryObj.pageIndex++;
querySearchHandler();
}
}
};
const refreshHandler = (obj:any) => { const refreshHandler = (obj:any) => {
currentRootDom.value.click() currentRootDom.value.click()
if(obj){ if(obj){
...@@ -213,19 +126,7 @@ ...@@ -213,19 +126,7 @@
queryObj.pageIndex = obj&&obj.pageIndex?obj.pageIndex:1; queryObj.pageIndex = obj&&obj.pageIndex?obj.pageIndex:1;
querySearchHandler(); querySearchHandler();
}; };
watch(
() => searchData.value.SellTemplateType,
(n, o) => {
return
isIndeterminate.value = false;
datas.selectAll = false;
datas.selectedDatas = [];
refreshHandler();
}
);
onMounted(() => {}); onMounted(() => {});
querySearchHandler(); querySearchHandler();
......
...@@ -50,20 +50,14 @@ ...@@ -50,20 +50,14 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ref, reactive, provide, watch, inject, onMounted, PropType } from "vue"; import { ref, reactive, watch, onMounted, PropType } from "vue";
import { ElLoading, ElMessage, ElMessageBox } from "element-plus"; import { ElMessage } from "element-plus";
import { MoreFilled, Edit, ArrowLeft,CopyDocument,DCaret,CaretTop,CaretBottom,Position } from "@element-plus/icons-vue"; import { ArrowLeft } from "@element-plus/icons-vue";
import ConfigService from "@/services/ConfigService";
import FolderService from "@/services/FolderService"; import FolderService from "@/services/FolderService";
import { injectKeyTemplate } from "@/types/injectKey";
import { formatDateTimeToRead } from "@/utils/common";
import { useSellTemplateStore, useScreenStore, useSlidesStore } from "@/store";
import { ApiResult } from "@/configs/axios"; import { ApiResult } from "@/configs/axios";
import journeyAdsList from "./components/journeyAdsList.vue"; import journeyAdsList from "./components/journeyAdsList.vue";
import breadPeeling from "./components/breadPeeling.vue"; import breadPeeling from "./components/breadPeeling.vue";
const SalesEditorStore = useSellTemplateStore();
const marketStore = useScreenStore();
const props = defineProps({ const props = defineProps({
currentMenu: { currentMenu: {
type: Number, type: Number,
...@@ -75,14 +69,9 @@ ...@@ -75,14 +69,9 @@
} }
}); });
const PopoverVisibleControls = ref(false);
const journeyAdsDetails = ref('');
const isTreeFile = ref(false) const isTreeFile = ref(false)
const Navigations = ref([] as Array<any>); const Navigations = ref([] as Array<any>);
const dataList = ref([] as Array<any>); const dataList = ref([] as Array<any>);
const NewDataList = ref([] as Array<any>);
const searchData = ref({} as any);
searchData.value = inject(injectKeyTemplate);
const RefreshLoading = ref(false) const RefreshLoading = ref(false)
const currentRootDom = ref() const currentRootDom = ref()
const datas = reactive({ const datas = reactive({
...@@ -96,10 +85,7 @@ ...@@ -96,10 +85,7 @@
name: string; name: string;
parentId: number; parentId: number;
type: number; type: number;
}>({ id: -1, name: "", parentId: 0, number: 1 }); }>({ id: -1, name: "", parentId: 0, number: 1 })
let TemplateType = 0;
if (searchData.value.SellTemplateType)
TemplateType = searchData.value.SellTemplateType;
const emit = defineEmits<{ const emit = defineEmits<{
(event: 'destroy-position'): void (event: 'destroy-position'): void
}>() }>()
...@@ -113,7 +99,6 @@ ...@@ -113,7 +99,6 @@
}); });
const loading = ref(false as any); const loading = ref(false as any);
const SellTemplateRef = ref<any>();
// 已选数据 // 已选数据
const UpdateData = (obj:any) =>{ const UpdateData = (obj:any) =>{
...@@ -179,20 +164,6 @@ ...@@ -179,20 +164,6 @@
RefreshLoading.value = false; RefreshLoading.value = false;
} }
}; };
const scrollingHandler = () => {
if (SellTemplateRef.value && !loading.value) {
let maxHeight =
SellTemplateRef.value.scrollHeight - SellTemplateRef.value.offsetHeight;
let scrollTop = SellTemplateRef.value.scrollTop;
if (
(maxHeight - scrollTop == 0 || maxHeight - scrollTop < 1) &&
queryObj.pageCount > queryObj.pageIndex
) {
queryObj.pageIndex++;
querySearchHandler();
}
}
};
const refreshHandler = (obj:any) => { const refreshHandler = (obj:any) => {
currentRootDom.value.click() currentRootDom.value.click()
if(obj){ if(obj){
...@@ -208,12 +179,6 @@ ...@@ -208,12 +179,6 @@
queryObj.pageIndex = obj&&obj.pageIndex?obj.pageIndex:1; queryObj.pageIndex = obj&&obj.pageIndex?obj.pageIndex:1;
querySearchHandler(); querySearchHandler();
}; };
const operaFolder = (id: number, name: string) => {
folderObj.value.id = id;
folderObj.value.name = name;
folderObj.value.type = queryObj.FileType;
folderObj.value.parentId = queryObj.FileId
};
const checkPositionHandler = (n:any)=>{ const checkPositionHandler = (n:any)=>{
if(n){ if(n){
if(n.Position && n.Position.length>0){ if(n.Position && n.Position.length>0){
...@@ -229,16 +194,6 @@ ...@@ -229,16 +194,6 @@
} }
} }
watch(
() => searchData.value.SellTemplateType,
(n, o) => {
datas.selectedDatas = [];
queryObj.FileType = n;
queryObj.FileId = 0;
refreshHandler();
}
);
watch(() => queryObj.FileId,(n, o) => { watch(() => queryObj.FileId,(n, o) => {
if(!n) Navigations.value = [] if(!n) Navigations.value = []
} }
......
This diff is collapsed.
...@@ -88,24 +88,17 @@ ...@@ -88,24 +88,17 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ref, reactive, provide, watch, inject, onMounted, PropType } from "vue"; import { ref, reactive, watch, inject, onMounted, PropType } from "vue";
import { ElLoading, ElMessage, ElMessageBox } from "element-plus"; import { ElMessage } from "element-plus";
import { MoreFilled, Edit, ArrowLeft,CopyDocument,DCaret,CaretTop,CaretBottom } from "@element-plus/icons-vue"; import { ArrowLeft} from "@element-plus/icons-vue";
import ConfigService from "@/services/ConfigService";
import FolderService from "@/services/FolderService"; import FolderService from "@/services/FolderService";
import { injectKeyTemplate } from "@/types/injectKey"; import { injectKeyTemplate } from "@/types/injectKey";
import { formatDateTimeToRead } from "@/utils/common";
import { useSellTemplateStore, useScreenStore, useSlidesStore } from "@/store";
import ShareForm from "./components/ShareForm.vue";
import Folder from "./components/Folder.vue"; import Folder from "./components/Folder.vue";
import HistoricalVersion from "./components/HistoricalVersion.vue";
import TreeFile from "./components/TreeFile.vue"; import TreeFile from "./components/TreeFile.vue";
import breadPeeling from "./components/breadPeeling.vue"; import breadPeeling from "./components/breadPeeling.vue";
import { ApiResult } from "@/configs/axios"; import { ApiResult } from "@/configs/axios";
import journeyAdsList from "./components/journeyAdsList.vue"; import journeyAdsList from "./components/journeyAdsList.vue";
const SalesEditorStore = useSellTemplateStore();
const marketStore = useScreenStore();
const props = defineProps({ const props = defineProps({
currentMenu: { currentMenu: {
type: Number, type: Number,
...@@ -117,12 +110,10 @@ ...@@ -117,12 +110,10 @@
} }
}); });
const PopoverVisibleControls = ref(false);
const journeyAdsDetails = ref(''); const journeyAdsDetails = ref('');
const isTreeFile = ref(false) const isTreeFile = ref(false)
const Navigations = ref([] as Array<any>); const Navigations = ref([] as Array<any>);
const dataList = ref([] as Array<any>); const dataList = ref([] as Array<any>);
const NewDataList = ref([] as Array<any>);
const searchData = ref({} as any); const searchData = ref({} as any);
searchData.value = inject(injectKeyTemplate); searchData.value = inject(injectKeyTemplate);
const RefreshLoading = ref(false) const RefreshLoading = ref(false)
...@@ -139,12 +130,7 @@ ...@@ -139,12 +130,7 @@
parentId: number; parentId: number;
type: number; type: number;
}>({ id: -1, name: "", parentId: 0, number: 1 }); }>({ id: -1, name: "", parentId: 0, number: 1 });
let TemplateType = 0;
if (searchData.value.SellTemplateType)
TemplateType = searchData.value.SellTemplateType;
const emit = defineEmits<{
(event: 'destroy-position'): void
}>()
const queryObj = reactive({ const queryObj = reactive({
pageIndex: 1, pageIndex: 1,
pageSize: 50, pageSize: 50,
...@@ -191,32 +177,7 @@ ...@@ -191,32 +177,7 @@
queryObj.FileId = FileId queryObj.FileId = FileId
refreshHandler() refreshHandler()
} }
const sellAdd = (type:number) =>{
searchData.value.sellId = 0
searchData.value.sellTempId = 0
SalesEditorStore.setSalesEditor(type)
marketStore.setMarket(true)
}
// 移动到文件夹
const MoveFile = () => {
datas.setFileList = []
for(let i=0;i<dataList.value.length;i++){
for(let j=0;j<datas.selectedDatas.length;j++){
if(dataList.value[i].FileId==datas.selectedDatas[j]){
datas.setFileList.push(
{
FileId: dataList.value[i].FileId,
FileType: dataList.value[i].FileType,
ParentFileId: dataList.value[i].ParentFileId
}
)
}
}
}
isTreeFile.value = true
}
const querySearchHandler = async () => { const querySearchHandler = async () => {
if(loading.value) return if(loading.value) return
loading.value = true; loading.value = true;
...@@ -247,20 +208,7 @@ ...@@ -247,20 +208,7 @@
RefreshLoading.value = false; RefreshLoading.value = false;
} }
}; };
const scrollingHandler = () => {
if (SellTemplateRef.value && !loading.value) {
let maxHeight =
SellTemplateRef.value.scrollHeight - SellTemplateRef.value.offsetHeight;
let scrollTop = SellTemplateRef.value.scrollTop;
if (
(maxHeight - scrollTop == 0 || maxHeight - scrollTop < 1) &&
queryObj.pageCount > queryObj.pageIndex
) {
queryObj.pageIndex++;
querySearchHandler();
}
}
};
const refreshHandler = (obj:any) => { const refreshHandler = (obj:any) => {
currentRootDom.value.click() currentRootDom.value.click()
if(obj){ if(obj){
...@@ -276,12 +224,7 @@ ...@@ -276,12 +224,7 @@
queryObj.pageIndex = obj&&obj.pageIndex?obj.pageIndex:1; queryObj.pageIndex = obj&&obj.pageIndex?obj.pageIndex:1;
querySearchHandler(); querySearchHandler();
}; };
const operaFolder = (id: number, name: string) => {
folderObj.value.id = id;
folderObj.value.name = name;
folderObj.value.type = queryObj.FileType;
folderObj.value.parentId = queryObj.FileId
};
const checkPositionHandler = (n:any)=>{ const checkPositionHandler = (n:any)=>{
if(n){ if(n){
if(n.Position && n.Position.length>0){ if(n.Position && n.Position.length>0){
...@@ -297,16 +240,6 @@ ...@@ -297,16 +240,6 @@
} }
} }
watch(
() => searchData.value.SellTemplateType,
(n, o) => {
datas.selectedDatas = [];
queryObj.FileType = n;
queryObj.FileId = 0;
refreshHandler();
}
);
watch(() => queryObj.FileId,(n, o) => { watch(() => queryObj.FileId,(n, o) => {
if(!n) Navigations.value = [] if(!n) Navigations.value = []
} }
......
<template> <template>
<div class="workspace column"> <div class="workspace column" >
<div class="row q-pa-md items-center" style="padding-bottom: 15px;"> <div class="row q-pa-md items-center" style="padding-bottom: 15px;">
<img src="https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1708239425000_437.png" style="height: 30px;" /> <img src="https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1708239425000_437.png" style="height: 30px;" />
<div class="col text-center"> <div class="col text-center">
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
</div> </div>
</el-tooltip> </el-tooltip>
<el-tooltip effect="dark" content="模板广场" placement="right"> <el-tooltip effect="dark" content="模板广场" placement="right">
<div class="left-button q-mt-md" @click="searchData.TemplateType=0,sellAdd(99)"> <div class="left-button q-mt-md" @click="openMarketHandler()">
<span class="svg-icon svg-icon-primary svg-icon-2x"> <span class="svg-icon svg-icon-primary svg-icon-2x">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24px" height="24px" viewBox="0 0 24 24" version="1.1"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24px" height="24px" viewBox="0 0 24 24" version="1.1">
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
...@@ -54,8 +54,8 @@ ...@@ -54,8 +54,8 @@
</el-button> </el-button>
<template #dropdown> <template #dropdown>
<el-dropdown-menu> <el-dropdown-menu>
<el-dropdown-item @click="searchData.TemplateType=1,sellAdd(1)">创建行程</el-dropdown-item> <el-dropdown-item @click="openMarketHandler('/trip')">创建行程</el-dropdown-item>
<el-dropdown-item @click="searchData.TemplateType=2,sellAdd(3)">创建广告图</el-dropdown-item> <el-dropdown-item @click="openMarketHandler('/ad')">创建广告图</el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</template> </template>
</el-dropdown> </el-dropdown>
...@@ -96,39 +96,30 @@ import StarTarget from './StarTarget.vue' ...@@ -96,39 +96,30 @@ import StarTarget from './StarTarget.vue'
import ShareList from './Share.vue'; import ShareList from './Share.vue';
import journeyAds from './journeyAds.vue' import journeyAds from './journeyAds.vue'
import RecycleBin from './RecycleBin.vue' import RecycleBin from './RecycleBin.vue'
import { Plus,ArrowDown,Clock,Star,Share,Picture,Management,Delete,RefreshRight,Refresh,Loading } from '@element-plus/icons-vue'; import { Plus,ArrowDown,Clock,Star,Share,Picture,Management,Delete } from '@element-plus/icons-vue';
import { injectKeyTemplate } from '@/types/injectKey'
import { useSellTemplateStore, useScreenStore, useSlidesStore } from '@/store' import { useSellTemplateStore, useScreenStore, useSlidesStore } from '@/store'
import { useRouter } from 'vue-router';
import { openNewBlank } from '@/utils/common';
const router = useRouter();
const {userInfo} = storeToRefs(userStore()) const {userInfo} = storeToRefs(userStore())
const currentMenu = ref<number>(0) const currentMenu = ref<number>(0)
const position = ref<{FileId:number,FileType:1|2,Position:{FileId:number,FileName:string}[]}|null>(null) const position = ref<{FileId:number,FileType:1|2,Position:{FileId:number,FileName:string}[]}|null>(null)
const searchData = ref({} as any) if(router.currentRoute.value.query && router.currentRoute.value.query.current){
searchData.value = inject(injectKeyTemplate) currentMenu.value = parseInt(router.currentRoute.value.query.current.toString())
if(searchData.value.SellTemplateType){ }
let current = 0
if(searchData.value.SellTemplateType==1) current = 3
if(searchData.value.SellTemplateType==2) current = 4
currentMenu.value = current
}else if(searchData.value.currentMenu!=undefined)currentMenu.value = searchData.value.currentMenu
const SalesEditorStore = useSellTemplateStore()
const marketStore = useScreenStore()
const sellAdd = (type:number) =>{ const openMarketHandler = (type:string='') =>{
searchData.value.sellId = 0 openNewBlank(`/market/create${type}`)
searchData.value.sellTempId = 0
SalesEditorStore.setSalesEditor(type)
marketStore.setMarket(true)
} }
const openFilePosition = (playload:any)=>{ const openFilePosition = (playload:any)=>{
position.value=playload position.value=playload
if(!playload.FormShare){ if(!playload.FormShare){
currentMenu.value = playload.FileType==1?3:4 currentMenu.value = playload.FileType==1?3:4
searchData.value.currentMenu=currentMenu.value // searchData.value.currentMenu=currentMenu.value
searchData.value.SellTemplateType = playload.FileType // searchData.value.SellTemplateType = playload.FileType
} }
else currentMenu.value = 2 else currentMenu.value = 2
...@@ -136,11 +127,8 @@ const openFilePosition = (playload:any)=>{ ...@@ -136,11 +127,8 @@ const openFilePosition = (playload:any)=>{
const setCurrentMenuHandler=(i:number)=>{ const setCurrentMenuHandler=(i:number)=>{
currentMenu.value=i currentMenu.value=i
searchData.value.currentMenu=i //searchData.value.currentMenu=i
let TemplateType = 0 //searchData.value.SellTemplateType = TemplateType
if(i==3) TemplateType = 1
if(i==4) TemplateType = 2
searchData.value.SellTemplateType = TemplateType
} }
</script> </script>
<style scoped> <style scoped>
......
...@@ -34,36 +34,34 @@ ...@@ -34,36 +34,34 @@
<th class="text-light">版本名称</th> <th class="text-light">版本名称</th>
<th class="text-light text-center" style="min-width: 120px;width: 120px;">操作</th> <th class="text-light text-center" style="min-width: 120px;width: 120px;">操作</th>
</tr> </tr>
<template v-for="(item,index) in dataList"> <tr class="HistoricalVersion-table pointer" v-for="(item,index) in dataList">
<tr class="HistoricalVersion-table pointer"> <td class="text-light text-5B5D62">
<td class="text-light text-5B5D62"> <span class="text-bold">{{item.UpdateTime.substr(0,11)}}</span>
<span class="text-bold">{{item.UpdateTime.substr(0,11)}}</span> <span class="q-pl-md q-pt-sm">{{item.UpdateTime.substr(11,19)}}</span>
<span class="q-pl-md q-pt-sm">{{item.UpdateTime.substr(11,19)}}</span> </td>
</td> <td class="HistoricalVersion-title text-light wrap text-5B5D62">
<td class="HistoricalVersion-title text-light wrap text-5B5D62"> <span>{{item.CreateByName}}</span>
<span>{{item.CreateByName}}</span> </td>
</td> <td class="text-light text-5B5D62"><span>{{item.FileSize}}KB</span></td>
<td class="text-light text-5B5D62"><span>{{item.FileSize}}KB</span></td> <td class="text-light">
<td class="text-light"> <span :class="[item.LogId==0?'active':'text-5B5D62']">
<span :class="[item.LogId==0?'active':'text-5B5D62']"> {{item.LogId==0?'当前版本':''}}</span>
{{item.LogId==0?'当前版本':''}}</span> </td>
</td> <td class="text-center">
<td class="text-center"> <span class="hoverShow row items-center">
<span class="hoverShow row items-center"> <el-button type="primary" icon="View" size="small" @click.stop="clickControls(item)">查看</el-button>
<el-button type="primary" icon="View" size="small" @click.stop="clickControls(item)">查看</el-button> <el-dropdown class="q-pl-md" trigger="click">
<el-dropdown class="q-pl-md" trigger="click"> <el-icon size="16" color="#b1b7cf"><MoreFilled /></el-icon>
<el-icon size="16" color="#b1b7cf"><MoreFilled /></el-icon> <template #dropdown>
<template #dropdown> <el-dropdown-menu class="q-pa-md">
<el-dropdown-menu class="q-pa-md" @click.stop="OffEdit"> <el-dropdown-item icon="Promotion" @click.stop="clickControls(item,1)">另存</el-dropdown-item>
<el-dropdown-item icon="Promotion" @click.stop="clickControls(item,1)">另存</el-dropdown-item> <el-dropdown-item v-if="item.LogId!=0" icon="Switch" @click.stop="clickControls(item,2)">替换</el-dropdown-item>
<el-dropdown-item v-if="item.LogId!=0" icon="Switch" @click.stop="clickControls(item,2)">替换</el-dropdown-item> </el-dropdown-menu>
</el-dropdown-menu> </template>
</template> </el-dropdown>
</el-dropdown> </span>
</span> </td>
</td> </tr>
</tr>
</template>
</table> </table>
<div v-if="dataList.length == 0 && !loading" class="bg-white rounded col" <div v-if="dataList.length == 0 && !loading" class="bg-white rounded col"
style="padding: 40px 10px;"> style="padding: 40px 10px;">
...@@ -91,13 +89,10 @@ ...@@ -91,13 +89,10 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ApiResult } from '@/configs/axios'; import { ApiResult } from '@/configs/axios';
import OrgService from '@/services/OrgService'; import { ref,reactive } from 'vue';
import { ref,reactive,provide } from 'vue'; import { ElLoading, ElMessage, ElMessageBox } from 'element-plus';
import { View,Download,EditPen,Delete } from '@element-plus/icons-vue';
import { ElMessage } from 'element-plus';
import ConfigService from '@/services/ConfigService'; import ConfigService from '@/services/ConfigService';
import { isPC, query } from '@/utils/common' import { query } from '@/utils/common'
import { injectKeyTemplate } from '@/types/injectKey'
import CopyFile from "./CopyFile.vue"; import CopyFile from "./CopyFile.vue";
const props = defineProps({ const props = defineProps({
...@@ -107,7 +102,7 @@ import CopyFile from "./CopyFile.vue"; ...@@ -107,7 +102,7 @@ import CopyFile from "./CopyFile.vue";
}, },
details: { details: {
type:Object, type:Object,
required:{} required:true
} }
}) })
const emit = defineEmits<{ const emit = defineEmits<{
...@@ -119,13 +114,9 @@ import CopyFile from "./CopyFile.vue"; ...@@ -119,13 +114,9 @@ import CopyFile from "./CopyFile.vue";
pdfImg: 'https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1708337830000_43.png', pdfImg: 'https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1708337830000_43.png',
adsImg: 'https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1708250377000_777.png', adsImg: 'https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1708250377000_777.png',
}) })
const searchData = ref({} as any)
provide(injectKeyTemplate,searchData)
const show=ref(true) const show=ref(true)
const loading = ref(true) const loading = ref(false)
const HistoricalVersion = ref<any>() const HistoricalVersion = ref<any>()
const copyDataList = ref([] as Array<any>);
const deleteLoading = ref<any>(null); const deleteLoading = ref<any>(null);
const queryObj = reactive({ const queryObj = reactive({
pageIndex: 1, pageIndex: 1,
...@@ -133,11 +124,11 @@ import CopyFile from "./CopyFile.vue"; ...@@ -133,11 +124,11 @@ import CopyFile from "./CopyFile.vue";
pageCount: 0, //总页数 pageCount: 0, //总页数
FileId: props.details.FileId, FileId: props.details.FileId,
}) })
const journeyAdsDetails = ref(''); const journeyAdsDetails = ref<any>('');
const isCopyTo = ref(false); const isCopyTo = ref(false);
const dataList=ref([]) const dataList=ref<any[]>([])
const clickControls = (row:any,type:any) => { const clickControls = (row:any,type:any=0) => {
if(type){ if(type){
journeyAdsDetails.value = row journeyAdsDetails.value = row
if(type==1){ if(type==1){
...@@ -194,32 +185,29 @@ import CopyFile from "./CopyFile.vue"; ...@@ -194,32 +185,29 @@ import CopyFile from "./CopyFile.vue";
} }
deleteLoading.value.close(); deleteLoading.value.close();
deleteLoading.value = null; deleteLoading.value = null;
}; }
const closedhandler=()=>{ const closedhandler=()=>{
emit('close') emit('close')
} }
const querySearchHandler = async () => { const querySearchHandler = async () => {
if(loading.value) return
loading.value = true loading.value = true
try { try {
if(queryObj.pageIndex == 1) dataList.value =[] if(queryObj.pageIndex == 1) dataList.value =[]
let pageRes = await ConfigService.GetFileHistory(queryObj); let pageRes = await ConfigService.GetFileHistory(queryObj);
if (pageRes.data.resultCode==ApiResult.SUCCESS) { if (pageRes.data.resultCode==ApiResult.SUCCESS) {
let arrList = function (list) { pageRes.data.data.pageData.forEach((x:any) => {
list.forEach((x) => { x.NewTitle = ''
x.NewTitle = '' })
}); dataList.value = dataList.value.concat(pageRes.data.data.pageData)
};
arrList(pageRes.data.data.pageData);
dataList.value = dataList.value.concat(pageRes.data.data.pageData);
queryObj.pageCount = pageRes.data.data.pageCount; queryObj.pageCount = pageRes.data.data.pageCount;
} }
loading.value = false
} catch (error) { } catch (error) {
ElMessage.error({ ElMessage.error({
message:'数据加载异常,请刷新页面' message:'数据加载异常,请刷新页面'
}) })
loading.value = false
} }
loading.value = false
} }
const scrollingHandler = () =>{ const scrollingHandler = () =>{
if(HistoricalVersion.value && !loading.value){ if(HistoricalVersion.value && !loading.value){
...@@ -230,14 +218,13 @@ import CopyFile from "./CopyFile.vue"; ...@@ -230,14 +218,13 @@ import CopyFile from "./CopyFile.vue";
querySearchHandler() querySearchHandler()
} }
} }
} }
const refreshHandler = () => { const refreshHandler = () => {
queryObj.pageIndex = 1; queryObj.pageIndex = 1;
querySearchHandler(); querySearchHandler();
emit('refreshHandler') emit('refreshHandler')
}; }
querySearchHandler() querySearchHandler()
</script> </script>
......
...@@ -191,7 +191,7 @@ import { ElMessage,ElTree,ElLoading, ElMessageBox } from 'element-plus'; ...@@ -191,7 +191,7 @@ import { ElMessage,ElTree,ElLoading, ElMessageBox } from 'element-plus';
import ConfigService from "@/services/ConfigService"; import ConfigService from "@/services/ConfigService";
import FolderService from "@/services/FolderService"; import FolderService from "@/services/FolderService";
import { injectKeyTemplate } from "@/types/injectKey"; import { injectKeyTemplate } from "@/types/injectKey";
import { formatDateTimeToRead } from "@/utils/common"; import { createSaleEditorLink, formatDateTimeToRead } from "@/utils/common";
import { useSellTemplateStore, useScreenStore, useSlidesStore } from "@/store"; import { useSellTemplateStore, useScreenStore, useSlidesStore } from "@/store";
import { isPC, query } from '@/utils/common' import { isPC, query } from '@/utils/common'
...@@ -202,6 +202,7 @@ import TreeFile from "./TreeFile.vue"; ...@@ -202,6 +202,7 @@ import TreeFile from "./TreeFile.vue";
import TreeFileRecover from "./TreeFileRecover.vue"; import TreeFileRecover from "./TreeFileRecover.vue";
import breadPeeling from "./breadPeeling.vue"; import breadPeeling from "./breadPeeling.vue";
import CopyFile from "./CopyFile.vue"; import CopyFile from "./CopyFile.vue";
import { useRouter } from 'vue-router';
const props = defineProps({ const props = defineProps({
currentMenu:{ currentMenu:{
...@@ -258,7 +259,7 @@ import CopyFile from "./CopyFile.vue"; ...@@ -258,7 +259,7 @@ import CopyFile from "./CopyFile.vue";
const marketStore = useScreenStore(); const marketStore = useScreenStore();
const { userInfo } = storeToRefs(userStore()) const { userInfo } = storeToRefs(userStore())
datas.loggedder = userInfo.value.emName datas.loggedder = userInfo.value.emName
const router = useRouter()
const dataList = ref([] as Array<any>); const dataList = ref([] as Array<any>);
dataList.value = props.list dataList.value = props.list
const queryObj = ref({} as any); const queryObj = ref({} as any);
...@@ -378,32 +379,32 @@ import CopyFile from "./CopyFile.vue"; ...@@ -378,32 +379,32 @@ import CopyFile from "./CopyFile.vue";
journeyAdsDetails.value = row journeyAdsDetails.value = row
isTreeFileRecover.value = true isTreeFileRecover.value = true
return return
try { // try {
let queryMsg = { // let queryMsg = {
Ids: row.FileId // Ids: row.FileId
} // }
deleteLoading.value = ElLoading.service({ // deleteLoading.value = ElLoading.service({
lock: true, // lock: true,
text: "正在处理", // text: "正在处理",
}); // });
let dataRes = await FolderService.UpdateTripOtherStatus(queryMsg); // let dataRes = await FolderService.UpdateTripOtherStatus(queryMsg);
deleteLoading.value.close(); // deleteLoading.value.close();
deleteLoading.value = null; // deleteLoading.value = null;
if (dataRes.data.resultCode == ApiResult.SUCCESS) { // if (dataRes.data.resultCode == ApiResult.SUCCESS) {
ElMessage({ // ElMessage({
showClose: true, // showClose: true,
message: `恢复${row.FileName}成功`, // message: `恢复${row.FileName}成功`,
type: "success", // type: "success",
}); // });
emit('refreshHandler') // emit('refreshHandler')
}else{ // }else{
ElMessage({ // ElMessage({
showClose: true, // showClose: true,
message: `恢复${row.FileName}失败`, // message: `恢复${row.FileName}失败`,
type: "warning", // type: "warning",
}); // });
} // }
} catch (error) {} // } catch (error) {}
} }
// 收藏文件 // 收藏文件
...@@ -608,30 +609,13 @@ import CopyFile from "./CopyFile.vue"; ...@@ -608,30 +609,13 @@ import CopyFile from "./CopyFile.vue";
else DeleteFile(row); else DeleteFile(row);
} else { } else {
if (row.FileType) { if (row.FileType) {
let list = [ const cp =userInfo.value.emName!=row.CreateName&&row.IsView==0?0:1
{ const ep =userInfo.value.emName!=row.CreateName&&row.IsDownLoad==0?0:1
id: "test-slide-1", //@TODO:返回字段中缺少CreateBy,
pageType: 0, const url = createSaleEditorLink(row.FileId,row.TempId,row.FileType,row.ParentFileId,ep,cp)
elements: [], router.push({
background: { path:url
type: "solid", })
color: "#ffffff",
},
},
];
useSlidesStore().setSlides(list);
searchData.value.sellId = row.FileId;
searchData.value.sellTempId = row.TempId;
searchData.value.TemplateType = row.FileType;
if(props.currentMenu==0&&datas.loggedder!=row.CreateName){
searchData.value.ParentFileId = 0
if(row.IsDownLoad==0) searchData.value.noExportPermission = true
else searchData.value.noExportPermission = false
if(row.IsView==0) searchData.value.noCopyPermission = true
else searchData.value.noCopyPermission = false
}else searchData.value.ParentFileId = row.ParentFileId;
SalesEditorStore.setSalesEditor(2);
marketStore.setMarket(false);
} else { } else {
// 2文件夹详情 // 2文件夹详情
if (type == 2) { if (type == 2) {
......
...@@ -49,12 +49,12 @@ ...@@ -49,12 +49,12 @@
>新建文件夹</el-dropdown-item >新建文件夹</el-dropdown-item
> >
<el-dropdown-item <el-dropdown-item
@click="(searchData.TemplateType = 1), sellAdd(1)" @click="openMarketHandler('/trip')"
v-if="currentMenu == 3" v-if="currentMenu == 3"
>新建行程</el-dropdown-item >新建行程</el-dropdown-item
> >
<el-dropdown-item <el-dropdown-item
@click="(searchData.TemplateType = 2), sellAdd(3)" @click="openMarketHandler('/ad')"
v-if="currentMenu == 4" v-if="currentMenu == 4"
>新建广告图</el-dropdown-item >新建广告图</el-dropdown-item
> >
...@@ -63,13 +63,6 @@ ...@@ -63,13 +63,6 @@
</el-dropdown> </el-dropdown>
</div> </div>
</div> </div>
<!--
<div
ref="SellTemplateRef"
class="journeyAds-container" v-if="false">
<el-scrollbar @scroll="scrollingHandler" class="q-px-md" style="height: 100%;">
</el-scrollbar>
</div> -->
<div class="col full-width q-ml-md"> <div class="col full-width q-ml-md">
<journeyAdsList <journeyAdsList
:current-menu="currentMenu" :current-menu="currentMenu"
...@@ -106,21 +99,18 @@ ...@@ -106,21 +99,18 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ref, reactive, provide, watch, inject, onMounted, PropType } from "vue"; import { ref, reactive, watch, inject, onMounted, PropType } from "vue";
import { ElLoading, ElMessage, ElMessageBox } from "element-plus"; import { ElMessage } from "element-plus";
import { MoreFilled, Edit, ArrowLeft,CopyDocument,DCaret,CaretTop,CaretBottom } from "@element-plus/icons-vue"; import { ArrowLeft,CopyDocument } from "@element-plus/icons-vue";
import ConfigService from "@/services/ConfigService";
import FolderService from "@/services/FolderService"; import FolderService from "@/services/FolderService";
import { injectKeyTemplate } from "@/types/injectKey"; import { injectKeyTemplate } from "@/types/injectKey";
import { formatDateTimeToRead } from "@/utils/common"; import { useSellTemplateStore, useScreenStore } from "@/store";
import { useSellTemplateStore, useScreenStore, useSlidesStore } from "@/store";
import ShareForm from "./components/ShareForm.vue";
import Folder from "./components/Folder.vue"; import Folder from "./components/Folder.vue";
import HistoricalVersion from "./components/HistoricalVersion.vue";
import TreeFile from "./components/TreeFile.vue"; import TreeFile from "./components/TreeFile.vue";
import breadPeeling from "./components/breadPeeling.vue"; import breadPeeling from "./components/breadPeeling.vue";
import { ApiResult } from "@/configs/axios"; import { ApiResult } from "@/configs/axios";
import journeyAdsList from "./components/journeyAdsList.vue"; import journeyAdsList from "./components/journeyAdsList.vue";
import { openNewBlank } from "@/utils/common";
const SalesEditorStore = useSellTemplateStore(); const SalesEditorStore = useSellTemplateStore();
const marketStore = useScreenStore(); const marketStore = useScreenStore();
...@@ -135,12 +125,10 @@ const props = defineProps({ ...@@ -135,12 +125,10 @@ const props = defineProps({
} }
}); });
const PopoverVisibleControls = ref(false);
const journeyAdsDetails = ref(''); const journeyAdsDetails = ref('');
const isTreeFile = ref(false) const isTreeFile = ref(false)
const Navigations = ref([] as Array<any>); const Navigations = ref([] as Array<any>);
const dataList = ref([] as Array<any>); const dataList = ref([] as Array<any>);
const NewDataList = ref([] as Array<any>);
const searchData = ref({} as any); const searchData = ref({} as any);
searchData.value = inject(injectKeyTemplate); searchData.value = inject(injectKeyTemplate);
const RefreshLoading = ref(false) const RefreshLoading = ref(false)
...@@ -157,9 +145,7 @@ const folderObj = ref<{ ...@@ -157,9 +145,7 @@ const folderObj = ref<{
parentId: number; parentId: number;
type: number; type: number;
}>({ id: -1, name: "", parentId: 0, number: 1 }); }>({ id: -1, name: "", parentId: 0, number: 1 });
let TemplateType = 0;
if (searchData.value.SellTemplateType)
TemplateType = searchData.value.SellTemplateType;
const emit = defineEmits<{ const emit = defineEmits<{
(event: 'destroy-position'): void (event: 'destroy-position'): void
}>() }>()
...@@ -167,7 +153,7 @@ const queryObj = reactive({ ...@@ -167,7 +153,7 @@ const queryObj = reactive({
pageIndex: 1, pageIndex: 1,
pageSize: 50, pageSize: 50,
pageCount: 0, //总页数 pageCount: 0, //总页数
FileType: TemplateType, FileType: props.currentMenu==3?1:2,
FileId: 0, FileId: 0,
OrderByType: 2,//1 升序 2倒序 OrderByType: 2,//1 升序 2倒序
}); });
...@@ -207,11 +193,9 @@ const breadPeelingInquire = (FileId:number,index:number)=> { ...@@ -207,11 +193,9 @@ const breadPeelingInquire = (FileId:number,index:number)=> {
queryObj.FileId = FileId queryObj.FileId = FileId
refreshHandler() refreshHandler()
} }
const sellAdd = (type:number) =>{
searchData.value.sellId = 0 const openMarketHandler = (type:string='') =>{
searchData.value.sellTempId = 0 openNewBlank(`/market/create${type}`)
SalesEditorStore.setSalesEditor(type)
marketStore.setMarket(true)
} }
// 移动到文件夹 // 移动到文件夹
...@@ -266,20 +250,7 @@ const querySearchHandler = async () => { ...@@ -266,20 +250,7 @@ const querySearchHandler = async () => {
RefreshLoading.value = false; RefreshLoading.value = false;
} }
}; };
const scrollingHandler = () => {
if (SellTemplateRef.value && !loading.value) {
let maxHeight =
SellTemplateRef.value.scrollHeight - SellTemplateRef.value.offsetHeight;
let scrollTop = SellTemplateRef.value.scrollTop;
if (
(maxHeight - scrollTop == 0 || maxHeight - scrollTop < 1) &&
queryObj.pageCount > queryObj.pageIndex
) {
queryObj.pageIndex++;
querySearchHandler();
}
}
};
const refreshHandler = (obj:any) => { const refreshHandler = (obj:any) => {
currentRootDom.value.click() currentRootDom.value.click()
if(obj){ if(obj){
...@@ -316,10 +287,10 @@ const checkPositionHandler = (n:any)=>{ ...@@ -316,10 +287,10 @@ const checkPositionHandler = (n:any)=>{
} }
watch( watch(
() => searchData.value.SellTemplateType, () => props.currentMenu,
(n, o) => { (n, o) => {
datas.selectedDatas = []; datas.selectedDatas = [];
queryObj.FileType = n; queryObj.FileType = n==3?1:2;
queryObj.FileId = 0; queryObj.FileId = 0;
refreshHandler(); refreshHandler();
} }
......
...@@ -6,8 +6,9 @@ const Components = require('unplugin-vue-components/webpack') ...@@ -6,8 +6,9 @@ const Components = require('unplugin-vue-components/webpack')
const { ElementPlusResolver } = require('unplugin-vue-components/resolvers') const { ElementPlusResolver } = require('unplugin-vue-components/resolvers')
module.exports = { module.exports = {
publicPath: './', publicPath: process.env.NODE_ENV === 'production' ? './' : '/',
lintOnSave: false, lintOnSave: false,
css: { css: {
loaderOptions: { loaderOptions: {
sass: { sass: {
...@@ -19,6 +20,9 @@ module.exports = { ...@@ -19,6 +20,9 @@ module.exports = {
}, },
}, },
configureWebpack: { configureWebpack: {
devServer:{
historyApiFallback:true
},
plugins: [ plugins: [
// new StyleLintPlugin({ // new StyleLintPlugin({
// files: ['src/**/*.{vue,html,css,scss}'], // files: ['src/**/*.{vue,html,css,scss}'],
......
This diff is collapsed.
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