Commit ff54896a authored by 罗超's avatar 罗超

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

parents f57f8dc9 eb9d94c1
<template> <template>
<div v-if="isFinish" style="height: 100%;"> <div v-if="isFinish" style="height: 100vh;overflow: auto;background: rgb(243, 246, 251);">
<Screen v-if="screening" /> <Screen v-if="screening" />
<Market v-else-if="market"></Market> <Market v-else-if="market"></Market>
<Editor v-else-if="_isPC" /> <Editor v-else-if="_isPC" />
...@@ -43,19 +43,31 @@ if (process.env.NODE_ENV === 'production') { ...@@ -43,19 +43,31 @@ if (process.env.NODE_ENV === 'production') {
const userLoginHandler = async ()=>{ const userLoginHandler = async ()=>{
let param = query() let param = query()
let userId = 1 let userId = 1
let ConfigId = 0 let ConfigId = 0 // 9117
let model = 1 let model = 1
if(param.uid) userId=parseInt(param.uid) if(param.uid) userId=parseInt(param.uid)
if(ConfigId) ConfigIdStore.setConfigId(ConfigId) if(param.ConfigId) ConfigId=parseInt(param.ConfigId)
if(model) modelStore.setModel(model) if(param.model) model=parseInt(param.model)
ConfigIdStore.setConfigId(ConfigId)
modelStore.setModel(model)
try { try {
await userStore().setUserLoginAsync(userId) await userStore().setUserLoginAsync(userId)
} catch (error) { } catch (error) {
} }
isFinish.value=true isFinish.value=true
if(!ConfigId&&!model) ElMessageBox.confirm(
'当前没有权限进行任何操作,请联系管理员!',
'提示',
{
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
}
).then(() => {})
.catch(() => {})
} }
userLoginHandler() userLoginHandler()
......
...@@ -63,9 +63,20 @@ ...@@ -63,9 +63,20 @@
<div class="menu-item" v-tooltip="'导出'" @click="setDialogForExport('pptx')"> <div class="menu-item" v-tooltip="'导出'" @click="setDialogForExport('pptx')">
<IconDownload class="icon" /> <IconDownload class="icon" />
</div> </div>
<el-button v-tooltip="'保存'" type="danger" <!-- <el-button type="danger" v-tooltip="'保存'"
size="small" icon="Check" circle :loading="datas.loading" size="small" icon="Check" circle :loading="datas.loading"
@click="setTemplate()" style="color: #ffff;"></el-button> @click="setTemplate()" style="color: #ffff;"></el-button> -->
<el-button type="danger"
v-if="(userInfo.IsEditTripTemplate==1&&model)||ConfigId>0"
size="small" :loading="datas.loading"
@click="setTemplate()" style="color: #ffff;margin-left: 10px;">
<template v-if="userInfo.IsEditTripTemplate==1&&model">
保存模版
</template>
<template v-if="ConfigId>0">
保存行程
</template>
</el-button>
<!-- <a class="github-link" href="https://github.com/pipipi-pikachu/PPTist" target="_blank"> <!-- <a class="github-link" href="https://github.com/pipipi-pikachu/PPTist" target="_blank">
<div class="menu-item"><IconGithub class="icon" /></div> <div class="menu-item"><IconGithub class="icon" /></div>
</a> --> </a> -->
......
...@@ -77,6 +77,30 @@ ...@@ -77,6 +77,30 @@
</el-select> </el-select>
</div> </div>
</template> </template>
<p class="q-mt-md"><span class="Required q-mr-md"></span>标签:</p>
<div class="row wrap q-mt-md">
<el-tag
v-for="tag in dynamicTags"
:key="tag"
class="mx-1 q-mr-md q-mb-md"
closable
:disable-transitions="false"
@close="handleClose(tag)">
{{ tag }}
</el-tag>
<el-input
v-if="inputVisible"
ref="InputRef"
v-model="inputValue"
class="ml-1 w-20"
size="small"
@keyup.enter="handleInputConfirm"
@blur="handleInputConfirm"
/>
<el-button v-else class="button-new-tag ml-1" size="small" @click="showInput">
+ 添加标签
</el-button>
</div>
<p class="q-mt-md"><span class="Required q-mr-md">*</span>选择颜色:</p> <p class="q-mt-md"><span class="Required q-mr-md">*</span>选择颜色:</p>
<div class="row wrap q-mt-md"> <div class="row wrap q-mt-md">
<el-select v-model="queryObj.ColorStr" class="m-2" placeholder="请选择颜色" <el-select v-model="queryObj.ColorStr" class="m-2" placeholder="请选择颜色"
...@@ -105,8 +129,10 @@ ...@@ -105,8 +129,10 @@
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { computed, ref, reactive, watch, inject } from 'vue'
import { computed, ref, reactive, watch, inject, nextTick } from 'vue'
import { storeToRefs } from 'pinia' import { storeToRefs } from 'pinia'
import { ElInput } from 'element-plus'
import { useMainStore, useSlidesStore, useScreenStore } from '@/store' import { useMainStore, useSlidesStore, useScreenStore } from '@/store'
import LineService from '@/services/LineService' import LineService from '@/services/LineService'
import ConfigService from '@/services/ConfigService' import ConfigService from '@/services/ConfigService'
...@@ -115,7 +141,7 @@ ...@@ -115,7 +141,7 @@
const datas = reactive({ const datas = reactive({
DataSource:{}, DataSource:{},
CountryValue: null CountryValue: null,
}) })
const dispositionObj = ref({} as any) const dispositionObj = ref({} as any)
const queryObj = ref({} as any) const queryObj = ref({} as any)
...@@ -125,6 +151,14 @@ ...@@ -125,6 +151,14 @@
const Series = ref([] as Array < any > ) //系列 const Series = ref([] as Array < any > ) //系列
const cursors = [] as Array<any> const cursors = [] as Array<any>
const inputValue = ref('')
const dynamicTags = ref([])
const inputVisible = ref(false)
const InputRef = ref<InstanceType<typeof ElInput>>()
if(queryObj.value.TagJsonStr!=''){
dynamicTags.value = queryObj.value.TagJsonStr.split(',')
}
const slidesStore = useSlidesStore() const slidesStore = useSlidesStore()
const { slides, slideIndex } = storeToRefs(slidesStore) const { slides, slideIndex } = storeToRefs(slidesStore)
...@@ -145,6 +179,27 @@ ...@@ -145,6 +179,27 @@
slidesStore.setSlides(newSlides) slidesStore.setSlides(newSlides)
}) })
const showInput = () => {
inputVisible.value = true
nextTick(() => {
InputRef.value.input.focus()
})
}
const handleClose = (tag: string) => {
dynamicTags.value.splice(dynamicTags.value.indexOf(tag), 1)
queryObj.value.TagJsonStr = dynamicTags.value.join(',')
}
const handleInputConfirm = () => {
if (inputValue.value) {
dynamicTags.value.push(inputValue.value)
}
queryObj.value.TagJsonStr = dynamicTags.value.join(',')
inputVisible.value = false
inputValue.value = ''
}
const setDialogForExport = (type: DialogForExportTypes) => { const setDialogForExport = (type: DialogForExportTypes) => {
mainStore.setDialogForExport(type) mainStore.setDialogForExport(type)
mainMenuVisible.value = false mainMenuVisible.value = false
......
...@@ -70,6 +70,7 @@ const datas = reactive({ ...@@ -70,6 +70,7 @@ const datas = reactive({
ColorName: '',//颜色名称 是 [string] ColorName: '',//颜色名称 是 [string]
ColorStr: null,//颜色值 是 [string] ColorStr: null,//颜色值 是 [string]
TempType: 1,// 版面类型(1-横版,2-竖版) TempType: 1,// 版面类型(1-横版,2-竖版)
TagJsonStr: '',// 标签
} }
}, },
......
...@@ -64,21 +64,30 @@ ...@@ -64,21 +64,30 @@
</div> </div>
</div> </div>
</div> </div>
<div style="height: 750px;overflow: auto;" v-loading="loading"> <div style="margin-top: 20px;" v-loading="loading">
<div v-if="dataList.length>0" class="q-mt-lg row wrap bg-white rounded" style="padding: 30px 10px 0 10px;"> <div v-if="dataList.length>0" class="q-mt-lg row wrap bg-white rounded" style="padding: 30px 10px 0 10px;">
<template v-for="(item,index) in dataList"> <template v-for="(item,index) in dataList">
<div class="MarketIndexListBox"> <el-popover effect="light" trigger="hover" placement="bottom-start" width="auto" height="auto">
<div class="MarketIndexList bg-white rounded" @click="goToTemplate(item)"> <template #default>
<div class="MarketIndexList-img"> <LayoutPool v-loading="queryObj.loading" />
<img :src="item.CoverImg" style="width:100%;height:100%" /> </template>
<template #reference>
<div class="MarketIndexListBox">
<div class="MarketIndexList bg-white rounded" @click="goToTemplate(item)"
@mouseover="getTemplate(item)">
<div class="MarketIndexList-img">
<el-image style="width: 100%;height: 100%" :src="item.CoverImg" fit="cover" />
<!-- <img :src="item.CoverImg" style="height:100%"/> -->
</div>
<div class="MarketIndexList-text">{{item.Title}}</div>
</div>
</div> </div>
<div class="MarketIndexList-text">{{item.Title}}</div> </template>
</div> </el-popover>
</div>
</template> </template>
</div> </div>
<div v-else class="q-mt-lg bg-white rounded" style="padding: 30px 10px 30px 10px;text-align: center;color: #909399;">暂无数据</div> <div v-else class="q-mt-lg bg-white rounded" style="padding: 30px 10px 30px 10px;text-align: center;color: #909399;">暂无数据</div>
<div v-if="dataList.length>0" class="q-mt-lg row" style="justify-content: center;"> <div v-if="dataList.length>0" class="q-mt-lg row" style="justify-content: center;margin-bottom: 40px">
<!-- hide-on-single-page --> <!-- hide-on-single-page -->
<el-pagination <el-pagination
background background
...@@ -102,10 +111,13 @@ ...@@ -102,10 +111,13 @@
import LineService from '@/services/LineService' import LineService from '@/services/LineService'
import ConfigService from '@/services/ConfigService' import ConfigService from '@/services/ConfigService'
import { userStore } from "@/store/user"; import { userStore } from "@/store/user";
import { useSlidesStore } from '@/store'
import { useScreenStore } from "@/store/screen"; import { useScreenStore } from "@/store/screen";
import { storeToRefs } from "pinia"; import { storeToRefs } from "pinia";
import { injectKeyTemplate } from '@/types/injectKey' import { injectKeyTemplate } from '@/types/injectKey'
import LayoutPool from '../Editor/Thumbnails/LayoutPool.vue'
const { const {
userInfo userInfo
} = storeToRefs(userStore()) } = storeToRefs(userStore())
...@@ -126,6 +138,7 @@ ...@@ -126,6 +138,7 @@
ColorName: '', //颜色名称 ColorName: '', //颜色名称
totalCount: 0, //总调试 totalCount: 0, //总调试
pageCount: 0, //总页数 pageCount: 0, //总页数
loading: false,
}) })
const loading = ref(false as any) const loading = ref(false as any)
...@@ -133,10 +146,37 @@ ...@@ -133,10 +146,37 @@
searchData.value = inject(injectKeyTemplate) searchData.value = inject(injectKeyTemplate)
const marketStore = useScreenStore() const marketStore = useScreenStore()
const isModelStore = useScreenStore() const isModelStore = useScreenStore()
const layoutsStore = useSlidesStore()
const { screening, market, model, isModel, ConfigId} = storeToRefs(useScreenStore()) const { screening, market, model, isModel, ConfigId} = storeToRefs(useScreenStore())
const addTemplate = () => { // 查看所有子模版
marketStore.setMarket(!market) const getTemplate = async (item) => {
queryObj.loading = true
layoutsStore.setLayouts([])
try {
let queryMsg = {
TempId: item.TempId
}
let dataRes = await ConfigService.GetTripTemplateSlide(queryMsg);
if (dataRes.data.resultCode == 1) {
let SlidesData = JSON.parse(dataRes.data.data.TempData)
let newSlides = []
if(typeof SlidesData=='object'&&!SlidesData.length){
let obj = {
pageType: 1,
...SlidesData
}
newSlides.push(obj)
}else if(SlidesData.length>0){
newSlides = SlidesData
}
layoutsStore.setLayouts(JSON.parse(JSON.stringify(newSlides)))
queryObj.loading = false
}
} catch (error) {
console.log("GetTripTemplateSlide", error);
queryObj.loading = false
}
} }
/** /**
...@@ -302,22 +342,22 @@ ...@@ -302,22 +342,22 @@
box-shadow: 0 5px 6px -3px #0003, 0 9px 12px 1px #00000024, 0 3px 16px 2px #0000001f; box-shadow: 0 5px 6px -3px #0003, 0 9px 12px 1px #00000024, 0 3px 16px 2px #0000001f;
} }
.MarketIndexList-img{ .MarketIndexList-img{
position: relative; /* position: relative; */
width: 100%; width: 100%;
height: 0; height: 252px;
padding-top: 100%; /* padding-top: 100%; */
border-top-left-radius: 6px; border-top-left-radius: 6px;
border-top-right-radius: 6px; border-top-right-radius: 6px;
border-bottom-left-radius: 2px; border-bottom-left-radius: 2px;
border-bottom-right-radius: 2px; border-bottom-right-radius: 2px;
overflow: hidden; overflow: hidden;
/* border-bo: 1px solid #eeee; */
} }
.MarketIndexList-img img{ .MarketIndexList-img img{
position: absolute; /* position: absolute;
top: 0; top: 0;
left: 0; left: 0;
width: 100%; height: 100%; */
height: 100%;
} }
.MarketIndexList-text{ .MarketIndexList-text{
font-size: 14px; font-size: 14px;
......
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