Commit e8eac6a2 authored by zhengke's avatar zhengke

no message

parents d1a5eeed 9fc6bea7
......@@ -7,11 +7,10 @@ page {
sans-serif;
}
/* .0123456789+-ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz导入设计文件基础数据绑定模板预览选择、上传图片地创作分享置 */
/* 在线链接服务仅供平台体验和调试使用,平台不承诺服务的稳定性,企业客户需下载字体包自行发布使用并做好备份。 */
/* .0123456789+-ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz导入设计文件基础数据绑定模板预览选择、上传图片地创作分享置夹建修改新 */
@font-face {
font-family: "alifont";src: url("//at.alicdn.com/wf/webfont/MQHUV6e56ce5/OXJDKjyyUbMp.woff2") format("woff2"),
url("//at.alicdn.com/wf/webfont/MQHUV6e56ce5/iy1cOOTdKN6P.woff") format("woff");
font-family: "alifont";src: url("//at.alicdn.com/wf/webfont/MQHUV6e56ce5/L514hmGnjb2E.woff2") format("woff2"),
url("//at.alicdn.com/wf/webfont/MQHUV6e56ce5/idFuggDsYh7v.woff") format("woff");
font-display: swap;
}
......@@ -182,6 +181,9 @@ page {
.q-ml-sm{
margin-left: 5px;
}
.q-mt-sm{
margin-top: 5px;
}
.q-mb-sm{
margin-bottom: 5px;
}
......
import Api,{ HttpResponse, Result } from './../utils/request';
class FolderService{
static async SetFolderAsync(FolderId:number,FolderName:string,ParendFolderId:number):Promise<HttpResponse>{
let msg = {
FolderId,
FolderName,
ParendFolderId
}
return Api.Post("triptemplate_SetTripFolder",msg)
}
}
export default FolderService;
\ No newline at end of file
......@@ -76,7 +76,7 @@
</div>
</div>
<div class="col">
<div class="q-px-md q-pt-lg">
<!-- <div class="q-px-md q-pt-lg">
<div class="q-pl-lg row q-pb-sm">
<h5 class="q-pl-md">
<template v-if="!currentMenu">最近</template>
......@@ -94,7 +94,7 @@
</el-icon>
</div>
</div>
</div>
</div> -->
<!-- <Example></Example> -->
<journeyAds v-if="currentMenu==3||currentMenu==4"></journeyAds>
</div>
......@@ -117,12 +117,12 @@ import { useSellTemplateStore, useScreenStore, useSlidesStore } from '@/store'
const {userInfo} = storeToRefs(userStore())
const currentMenu = ref<number>(0)
const datas = reactive({
journeyAds:{
RefreshLoading: false
}
})
provide('journeyAds',datas.journeyAds)
// const datas = reactive({
// journeyAds:{
// RefreshLoading: false
// }
// })
// provide('journeyAds',datas.journeyAds)
const searchData = ref({} as any)
searchData.value = inject(injectKeyTemplate)
......
......@@ -91,7 +91,7 @@
SellDatas:{
currentMenu: 3,
},
pdfImg: 'https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1708250377000_558.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',
})
let TemplateType = 0
......
<template>
<el-dialog v-model="show" v-loading="loading" :show-close="false" :close-on-press-escape="false" :close-on-click-modal="false" style="max-width:400px;">
<template #header>
<div class="text-title">{{folderId==0?'新建':'修改'}}文件夹</div>
</template>
<div>
<el-input v-model="name" placeholder="请输入文件夹名称" class="full-width" />
</div>
<template #footer>
<span class="dialog-footer">
<el-button @click="()=>closedhandler()">取消</el-button>
<el-button type="primary" @click="()=>saveFolder()"> {{folderId==0?'立即创建':'保存修改'}} </el-button>
</span>
</template>
</el-dialog>
</template>
<script setup lang="ts">
import { ApiResult } from '@/configs/axios';
import FolderService from '@/services/FolderService';
import { ElMessage } from 'element-plus';
import { ref } from 'vue';
//FolderType 文件夹类型(1-行程,2-广告)
const props = defineProps({
folderId:{
type:Number,
default:0
},
parentId:{
type:Number,
default:0
},
folderName:{
type:String,
default:''
},
})
const emit = defineEmits<{
(event: 'close'): void,
(event: 'success'): void
}>()
const show=ref(true)
const loading = ref(false)
const name = ref(props.folderName)
const closedhandler=()=>{
emit('close')
}
const saveFolder=async ()=>{
let errmsg = ''
if(name.value=='') errmsg='请输入文件夹名称'
if(errmsg==''){
try {
let response = await FolderService.SetFolderAsync(props.folderId,name.value,props.parentId)
if(response.data.resultCode==ApiResult.SUCCESS){
ElMessage.success({
message:'操作成功'
})
} else errmsg='操作失败,请重试'
} catch (error) {
errmsg = '操作失败,请重试'
}
}
if(errmsg!='') {
ElMessage.error({
message:errmsg
})
}
loading.value=false
}
</script>
\ No newline at end of file
......@@ -15,7 +15,7 @@
<div class="search-result-block">
<div class="text-h6 text-left text-bolder q-mx-md q-mb-sm">行程文档</div>
<div class="items row items-center q-pa-md">
<img class="biao" src="https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1708250377000_558.png" />
<img class="biao" src="https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1708337830000_43.png" />
<div class="right col text-left q-pb-md">
<div class="file-name" truncated>2024-03-12 摩洛哥、突尼斯北非系列2024-03-12 摩洛哥、突尼斯<span class="text-waring">北非系</span>列2024-03-12 摩洛哥、突尼斯北非系列</div>
<div class="text-small q-mt-sm row items-center text-info">
......@@ -26,7 +26,7 @@
</div>
</div>
<div class="items row items-center q-pa-md">
<img class="biao" src="https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1708250377000_558.png" />
<img class="biao" src="https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1708337830000_43.png" />
<div class="right col text-left q-pb-md">
<div class="file-name" truncated>2024-03-12 摩洛哥、<span class="text-waring">突尼斯</span>北非系列</div>
<div class="text-small q-mt-sm row items-center text-info">
......@@ -37,7 +37,7 @@
</div>
</div>
<div class="items row items-center q-pa-md">
<img class="biao" src="https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1708250377000_558.png" />
<img class="biao" src="https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1708337830000_43.png" />
<div class="right col text-left q-pb-md">
<div class="file-name" truncated>2024-03-12 <span class="text-waring">摩洛哥</span>、突尼斯北非系列2024-03-12 摩洛哥、突尼斯北非系列</div>
<div class="text-small q-mt-sm row items-center text-info">
......
......@@ -33,7 +33,7 @@
<el-select v-model="selectedPermission" style="width: 150px;" collapse-tags multiple placeholder="请选择权限">
<el-option :label="x.label" :value="x.value" v-for="x in permissions" />
</el-select>
<el-button class="q-ml-md" v-loading="saveLoading" @click="saveShareHandler">添加</el-button>
<el-button class="q-ml-md" @click="saveShareHandler">添加</el-button>
</div>
<el-scrollbar height="300px" class="q-mt-lg">
<div class="row items-center q-mb-md">
......@@ -131,8 +131,8 @@
</div>
<template #footer>
<span class="dialog-footer">
<el-button @click="()=>closedhandler()">取消</el-button>
<el-button type="primary" @click="()=>closedhandler()"> 保存分享配置 </el-button>
<el-button @click="()=>closedhandler()">关闭</el-button>
<!-- <el-button type="primary" @click="()=>closedhandler()"> 保存分享配置 </el-button> -->
</span>
</template>
</el-dialog>
......@@ -163,7 +163,6 @@ const show=ref(true)
const shareTypeItems = ref<{label:string,value:number}[]>([])
const permissions = ref<{label:string,value:number}[]>([])
const loading = ref(true)
const saveLoading = ref(false)
const selectedDepartment = ref<any[]>([])
const selectedCompnays=ref<number[]>([])
const selectedPeoples=ref<number[]>([])
......@@ -217,8 +216,8 @@ const getAllPeople = async ()=>{
})
}
const saveShareHandler = async ()=>{
if(saveLoading.value) return
saveLoading.value=true
if(loading.value) return
loading.value=true
let errmsg=''
if(currentType.value==1 && selectedCompnays.value.length==0)errmsg='请选择公司'
else if(currentType.value==2 && selectedDepartment.value.length==0)errmsg='请选择部门'
......@@ -253,7 +252,7 @@ const saveShareHandler = async ()=>{
message:errmsg
})
}
saveLoading.value=false
loading.value=false
}
getDepartments()
getAllBranch()
......
<template>
<div ref="SellTemplateRef" class="journeyAds-container">
<div class="q-px-md q-pt-lg">
<div class="q-pl-lg row q-mb-lg">
<div class="col row items-center q-pl-md">
<h5>
<template v-if="currentMenu==3">行程文档</template>
<template v-else-if="currentMenu==4">广告图</template>
</h5>
<div class="select-btn q-pl-lg pointer q-mt-sm">
<el-icon>
<RefreshRight v-if="!datas.journeyAds.RefreshLoading"
@click="()=>refreshHandler()"/>
<Refresh v-else />
</el-icon>
</div>
</div>
<div>
<el-dropdown trigger="click">
<el-button>新建</el-button>
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item @click="()=>operaFolder(0,'')">新建文件夹</el-dropdown-item>
<el-dropdown-item @click="searchData.TemplateType=1,sellAdd(1)" v-if="currentMenu==3">新建行程</el-dropdown-item>
<el-dropdown-item @click="searchData.TemplateType=2,sellAdd(3)" v-if="currentMenu==4">建广告图</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
</div>
</div>
</div>
<div ref="SellTemplateRef" class="journeyAds-container" style="height: 100%;overflow: auto;">
<el-scrollbar @scroll="scrollingHandler" height="100%" class="q-px-md">
<pre style="min-width:700px;">
<div style="min-width:700px;">
<table class="text-small" style="width: 100%">
<tr @click.stop="OffEdit">
<th class="text-left" style="width: 20px;"><el-checkbox class="SelectAllBox" size="sm" v-model="datas.selectAll"
<tr>
<th class="text-left" style="width: 20px;"><el-checkbox size="sm" v-model="datas.selectAll"
@click="clickSelectAll"
:indeterminate="isIndeterminate"/></th>
<th colspan="2" class="text-light"><div class="text-left q-pl-md">文档名称</div></th>
<th style="width: 100px;" class="text-light">最近修改</th>
<th class="text-light">最近修改</th>
<th class="text-light">创建者</th>
<th width="120" class="text-light">操作</th>
<th width="150" class="text-light">操作</th>
</tr>
<template v-for="(item,index) in dataList">
<tr class="text-5B5D62 journeyAds-table pointer">
<td class="" @click.stop="OffEdit"><div class="row items-center hoverShow"
<tr class="text-5B5D62 journeyAdsple-table pointer">
<td class=""><div class="row items-center hoverShow"
:style="{'opacity':item.singleChoice?1:''}">
<el-checkbox class="SelectAllBox" size="sm" v-model="item.singleChoice"
<el-checkbox size="sm" v-model="item.singleChoice"
@click="singleChoice(item)"/></div></td>
<td class="" style="width: 30px;" @click.stop="OffEdit"><img class="q-px-md" :src="item.TemplateType==1?datas.pdfImg:datas.adsImg"
<td class="" style="width: 30px;"><img class="q-px-md" :src="item.TemplateType==1?datas.pdfImg:datas.adsImg"
style="height: 25px;" /></td>
<td class="journeyAds-title wrap"><div v-if="!item.editTitle" @click.stop="OffEdit"><el-tooltip
style="max-width: 600px;"
placement="top-start"
><template #content><div style="max-width: 600px;">{{item.Title}}</div></template><span class="journeyAds-TitleCenter">{{item.Title}}</span> </el-tooltip></div><el-input
class="journeyAds-Input"
v-model="item.Title"
autosize
type="textarea"
placeholder="Please input"
maxlength="500"
size="small"
v-if="item.editTitle"
@blur="handleUpdateTitle(item)"
/></td>
<td class="text-center" @click.stop="OffEdit"><span>{{item.Day?item.Day+'天前':item.UpdateTime}}</span></td>
<td class="text-center" @click.stop="OffEdit"><span>{{item.CreateByName}}</span></td>
<td class="text-center" @click.stop="OffEdit"><div class="hoverShow row items-center just-center q-pt-sm"><el-button type="primary" :icon="Edit" size="small" @click="editDelete(item)">编辑</el-button><el-dropdown class="q-pl-md" trigger="click"><el-icon size="16" color="#b1b7cf"><MoreFilled /></el-icon>
<td class="journeyAdsple-title wrap"><span>{{item.Title}}</span></td>
<td class="text-center"><span>{{item.Day?item.Day+'天前':item.UpdateTime}}</span></td>
<td class="text-center"><span>{{item.CreateByName}}</span></td>
<td class="text-center"><div class="hoverShow row items-center just-center q-pt-sm"><el-button type="primary" :icon="Edit" size="small" @click="editDelete(item)">编辑</el-button><el-dropdown class="q-pl-md" trigger="click"><el-icon size="16" color="#b1b7cf"><MoreFilled /></el-icon>
<template #dropdown>
<el-dropdown-menu class="q-pa-md">
<el-dropdown-item icon="EditPen" @click.stop="startEditTitle(item)">重命名</el-dropdown-item>
<el-dropdown-item icon="EditPen">重命名</el-dropdown-item>
<el-dropdown-item icon="Clock">历史版本</el-dropdown-item>
<el-dropdown-item icon="Position" @click.stop="()=>shareId=item.Id">分享</el-dropdown-item>
<el-dropdown-item icon="Delete" @click.stop="editDelete(item,1)">删除</el-dropdown-item>
<el-dropdown-item icon="Position" @click="()=>shareId=item.Id">分享</el-dropdown-item>
<el-dropdown-item icon="Delete" @click="editDelete(item,1)">删除</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown></div></td>
</tr>
</template>
</table>
</pre>
</div>
<div v-if="dataList.length == 0 && !loading" class="q-mt-lg bg-white rounded"
style="padding: 30px 10px 30px 10px;">
<el-empty description="暂无数据" />
......@@ -61,6 +77,7 @@
</el-scrollbar>
</div>
<ShareForm :id="shareId" v-if="shareId>0" @close="()=>shareId=0"></ShareForm>
<Folder :folder-id="folderObj?.id" :folder-name="folderObj?.name" :parent-id="folderObj.parentId" v-if="folderObj.id>-1" @close="()=>folderObj.id=-1"></Folder>
</template>
<script setup lang="ts">
import { ref, reactive, provide, watch, inject, onMounted } from 'vue'
......@@ -71,24 +88,32 @@
import { getDaysBetween } from '@/utils/common'
import { useSellTemplateStore, useScreenStore, useSlidesStore } from '@/store'
import ShareForm from './ShareForm.vue';
import Folder from './Folder.vue';
const SalesEditorStore = useSellTemplateStore()
const marketStore = useScreenStore()
const props = defineProps({
currentMenu:{
type:Number,
default:3
}
})
const PopoverVisibleControls = ref(false)
const shareId = ref(0)
const isIndeterminate = ref(false)
const isIndeterminate = ref(true)
const dataList = ref([] as Array < any > )
const searchData = ref({} as any)
searchData.value = inject(injectKeyTemplate)
const datas = reactive({
selectedDatas: [] as Array,
selectAll: false as any,
journeyAds:{} as any,
pdfImg: 'https://viitto-1301420277.cos.ap-chengdu.myqcloud.com/Test/Upload/Goods/1708250377000_558.png',
journeyAds:{RefreshLoading:false} as any,
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',
})
const folderObj = ref<{id:number,name:string,parentId:number}>({id:-1,name:'',parentId:0})
let TemplateType = 0
if(searchData.value.SellTemplateType) TemplateType = searchData.value.SellTemplateType
// if(searchData.value.journeyAds) {
......@@ -102,92 +127,10 @@
pageCount: 0, //总页数
TemplateType: TemplateType,
})
const editObj = reactive({})
datas.journeyAds = inject('journeyAds')
//datas.journeyAds = inject('journeyAds')
const loading = ref(false as any)
const deleteLoading = ref<any>(null)
const SellTemplateRef = ref<any>()
// 重命名
const OffEdit = () => {
for(let i=0;i<dataList.value.length;i++){
dataList.value[i].editTitle = false
if(editObj.value&&editObj.value.Id
&&dataList.value[i].Id==editObj.value.Id) {
dataList.value[i].Title = editObj.value.Title
}
}
}
const handleUpdateTitle = (row:any) => {
if(!row.Title) return ElMessage({
showClose: true,
message: '文档名称不能为空',
type: 'warning',
})
row.editTitle = false
if(row.Title!=editObj.value.Title) {
editObj.value.Title = row.Title
SetSellTemplate(row)
}
}
const startEditTitle = (row:any) => {
for(let i=0;i<dataList.value.length;i++){
dataList.value[i].editTitle = false
if(dataList.value[i].Id==row.Id) {
row.editTitle = true
sellGetTripTemplate(row)
}
}
}
// 销售模版数据
const sellGetTripTemplate = async (row:any) =>{
try {
let queryMsg = {
Id: row.Id
}
let dataRes = await ConfigService.sellGetTemplateDetails(queryMsg);
if (dataRes.data.resultCode == 1) {
editObj.value = dataRes.data.data
}
} catch (error) {
}
}
// 保存重命名
const SetSellTemplate = async (row:any) => {
try {
let TempId = row.TempId
let Id = row.Id
let queryMsg = {
Id: Id,
TempId: TempId,
TempData: editObj.value.TempData,
Title: editObj.value.Title,
OWidth: 0,
OHeight: 0,
}
if(editObj.value.TemplateType==2){
queryMsg.OWidth = editObj.value.Width
queryMsg.OHeight = editObj.value.Height
}
let TemplateRes = await ConfigService.sellSetTemplate(queryMsg);
if (TemplateRes.data.resultCode == 1) {
ElMessage({
showClose: true,
message: '重命名成功',
type: 'success',
})
}else{
ElMessage({
showClose: true,
message: '重命名失败',
type: 'warning',
})
}
} catch (error) {}
}
// 全选按钮
const clickSelectAll = () => {
if(datas.selectAll) {
......@@ -225,6 +168,8 @@
isIndeterminate.value = true
}
if(datasList==0&&checkedCount==0) datas.selectAll = ''
console.log(datas.selectedDatas,'----')
}
const setTemplateType = (Id:number) => {
queryObj.pageIndex = 1
......@@ -302,12 +247,8 @@
if (pageRes.data.resultCode == 1) {
let arrList = function(list){
list.forEach(x => {
x.editTitle = false
x.show = false
x.singleChoice = false
if(datas.selectedDatas.length>0){
let find = datas.selectedDatas.find(y=>{ return y==x.Id })
if(find) x.singleChoice = true
}
const date1 = new Date();
const date2 = new Date(x.UpdateTime);
x.Day = getDaysBetween(date1, date2)
......@@ -335,10 +276,18 @@
}
}
const refreshHandler = ()=>{
datas.journeyAds.RefreshLoading=true
queryObj.pageIndex = 1
querySearchHandler()
}
const operaFolder = (id:number,name:string)=>{
folderObj.value.id=id
folderObj.value.name=name
}
watch(() => searchData.value.SellTemplateType, (n,o) => {
isIndeterminate.value = false
datas.selectedDatas = []
setTemplateType(n)
})
watch(() => datas.journeyAds.RefreshLoading, (n,o) => {
......@@ -355,65 +304,38 @@
</script>
<style lang="scss" scoped>
@import url('../../../assets/styles/common.css');
.SelectAllBox{
position: relative;
top: 3px;
}
.journeyAds-title{
max-width: 600px;
}
.journeyAds-TitleCenter{
display: block; /* 将元素转化为块级元素 */
overflow: hidden; /* 隐藏超出部分 */
text-overflow: ellipsis; /* 显示省略号 */
white-space: nowrap; /* 不换行 */
-webkit-box-orient: vertical; /* 水平布局改为垂直布局 */
-webkit-line-clamp: 1; /* 只显示两行文本 */
padding-right: 20px;
}
.journeyAds-Input{
padding-right: 20px;
position: relative;
top: 6px;
::v-deep(.el-textarea__inner){
padding: 5px;
background: #f5f5f5;
}
}
.journeyAds-container {
position: relative;
overflow: auto ;
height: 100%;
overflow: auto;
}
}
.journeyAds-container th {
background: #fff;
position: sticky;
top: 0px;
z-index: 2;
}
.journeyAds-table{
.journeyAdsple-table{
}
.journeyAds-table td,.journeyAds-container th{
.journeyAdsple-table td,.journeyAds-container th{
border-bottom: 1px solid #F6F6F6;
}
.journeyAds-table td:first-child,
.journeyAds-table td:nth-child(2),
.journeyAdsple-table td:first-child,
.journeyAdsple-table td:nth-child(2),
.journeyAds-container th:first-child{
border: 0;
}
.journeyAds-table td{
.journeyAdsple-table td{
padding-bottom: 6px;
}
.journeyAds-table td:nth-child(2){
.journeyAdsple-table td:nth-child(2){
padding-bottom: 0;
}
.hoverShow{
opacity: 0;
}
.journeyAds-table:hover .hoverShow{
.journeyAdsple-table:hover .hoverShow{
opacity: 1;
}
......
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