Files
aida_front/src/component/WorksPage/publish.vue

387 lines
11 KiB
Vue
Raw Normal View History

2024-05-16 09:41:16 +08:00
<template>
<a-modal
2024-05-22 10:45:52 +08:00
class="publish_modal generalModel"
2024-05-16 09:41:16 +08:00
v-model:visible="publish"
:footer="null"
width="50%"
:maskClosable="false"
:centered="true"
:closable="false"
:mask="publishMask"
:keyboard="false"
:destroyOnClose="true"
>
2024-05-22 10:45:52 +08:00
<div class="generalModel_btn">
<div class="generalModel_closeIcon" @click.stop="cancelDsign()">
2024-05-16 09:41:16 +08:00
<i class="fi fi-rr-cross-small"></i>
</div>
</div>
<div class="publish_content">
<div class="modal_title_text">
2024-06-21 10:30:09 +08:00
<div>{{$t('Publish.Publish')}}</div>
2024-05-16 09:41:16 +08:00
<div class="modal_title_text_intro"></div>
</div>
<div class="publish_content_bottom">
<div class="publidh_left">
<div class="publidh_content_item">
2024-06-21 10:30:09 +08:00
<div class="publidh_content_item_title">{{$t('Publish.CoverPicture')}}</div>
2024-05-16 09:41:16 +08:00
<div class="publish_content_shrink publish_content_item">
2024-05-16 17:14:22 +08:00
<img v-lazy="selectDate.url" alt="">
2024-05-16 09:41:16 +08:00
</div>
</div>
</div>
<div class="publidh_right">
<div class="publidh_right_name publidh_content_item">
2024-06-21 10:30:09 +08:00
<div class="publidh_content_item_title">{{$t('Publish.CollectionTitle')}}</div>
2024-05-16 17:14:22 +08:00
<input type="text" v-model="subPublishDate.portfolioName">
2024-05-16 09:41:16 +08:00
</div>
<div class="publidh_right_name publidh_content_item">
2024-06-21 10:30:09 +08:00
<div class="publidh_content_item_title">{{$t('Publish.Description')}}</div>
2024-05-16 17:14:22 +08:00
<textarea ref="textarea" v-model="subPublishDate.portfolioDes"></textarea>
2024-05-16 09:41:16 +08:00
</div>
2024-06-17 09:39:01 +08:00
<div class="publidh_right_detail publidh_content_item">
2024-06-21 10:30:09 +08:00
<div class="publidh_content_item_title">{{$t('Publish.Permissions')}}</div>
2024-06-17 09:39:01 +08:00
<!-- <div>
<a-checkbox @change="setPermissions" v-model:checked="setPermissionsAll">All.</a-checkbox>
</div> -->
<!-- <div>
<a-checkbox @change="setPermissionsItem()" v-model:checked="selectPermissions.isAllowLikes">Whether to allow likes.</a-checkbox>
</div> -->
<!-- <div>
<a-checkbox @change="setPermissionsItem()" v-model:checked="selectPermissions.isAllowComment">Allow comments or not.</a-checkbox>
</div>
<div>
<a-checkbox @change="setPermissionsItem()" v-model:checked="selectPermissions.isDisplayArea">Show locale or not.</a-checkbox>
</div> -->
<div>
2024-06-21 10:30:09 +08:00
<a-checkbox @change="setPermissionsItem()" v-model:checked="selectPermissions.isSecondaryCreation">{{$t('Publish.PermissionsItem1')}}</a-checkbox>
2024-06-17 09:39:01 +08:00
</div>
</div>
2024-05-16 09:41:16 +08:00
<!-- <div class="publidh_right_name publidh_content_item">
<div class="publidh_content_item_title">Thumbnail preview</div>
<input type="text">
</div> -->
2024-05-16 17:14:22 +08:00
<div class="publidh_content_item publidh_right_zhuyi">
2024-06-17 09:39:01 +08:00
<!-- <div class="publidh_content_item_intro">
<label >
<span class="icon iconfont icon-zhuyi"></span>
<div>
This will publish your work to the square for all users to see.
</div>
</label>
</div> -->
2024-05-16 09:41:16 +08:00
</div>
<div class="publidh_right_btn">
2024-06-21 10:30:09 +08:00
<div class="started_btn" @click="cancelDsign">{{$t('Publish.Close')}}</div>
<div class="started_btn" @click="setPublish">{{beenPublished == 0?$t('Publish.Publish'):$t('Publish.UpdatePublish')}}</div>
2024-05-16 09:41:16 +08:00
</div>
</div>
</div>
2024-05-16 17:14:22 +08:00
</div>
<div class="mark_loading" v-show="isShowMark">
<a-spin size="large" />
2024-05-16 09:41:16 +08:00
</div>
</a-modal>
</template>
<script lang="ts">
2024-07-08 09:42:21 +08:00
import { defineComponent,watch,createVNode, inject, ref ,toRefs,computed,reactive,triggerRef, nextTick} from "vue";
2024-05-16 09:41:16 +08:00
// import { getCookie } from "@/tool/cookie";
2024-05-16 17:14:22 +08:00
import { Https } from "@/tool/https";
import { getCookie,setCookie } from "@/tool/cookie";
2024-05-16 09:41:16 +08:00
// import domTurnImg from '@/tool/domTurnImg'
import { ExclamationCircleOutlined } from '@ant-design/icons-vue';
import { Modal,message } from 'ant-design-vue';
2024-06-17 09:39:01 +08:00
import { downloadIamge,base64ToFile } from "@/tool/util";
2024-06-21 10:30:09 +08:00
import { useI18n } from 'vue-i18n';
2024-08-16 15:40:25 +08:00
import { useStore } from "vuex";
2024-05-16 09:41:16 +08:00
export default defineComponent({
setup(prop,{emit}) {
2024-06-21 10:30:09 +08:00
let {t} = useI18n()
2024-08-16 15:40:25 +08:00
const store = useStore();
2024-05-16 09:41:16 +08:00
let publish: any = ref(false);//弹窗
let publishMask:any = ref(false)//弹窗遮罩
2024-07-08 09:42:21 +08:00
let setBeenPublished:any = inject('setBeenPublished')
2024-05-16 17:14:22 +08:00
let publishData:any = reactive({
2024-06-17 09:39:01 +08:00
publishName:'',
2024-05-16 09:41:16 +08:00
loadingShow:false,
publishMarginTop:0,
2024-07-08 09:42:21 +08:00
beenPublished:inject('beenPublished'),//history回来时候表示是否已经发布0为没发布
2024-05-16 09:41:16 +08:00
publishList:[],
publishIndex:0,//当前图片索引
2024-05-16 17:14:22 +08:00
isShowMark:false,
2024-06-17 09:39:01 +08:00
setPermissionsAll:true,
2024-05-16 17:14:22 +08:00
selectDate:{
url:'',
},
subPublishDate:{
},
2024-06-17 09:39:01 +08:00
selectPermissions:{
isAllowComment:true,
isDisplayArea:true,
isSecondaryCreation:true,
}
2024-05-16 09:41:16 +08:00
})
// let textarea: any = ref(null)
// let setCopy = ()=>{
// textarea.value.select()
// document.execCommand("copy");
// }
2024-05-16 17:14:22 +08:00
let init = (data:any)=>{
let userInfo:any = getCookie("userInfo")
2024-06-17 09:39:01 +08:00
// console.log(data);
2024-05-16 09:41:16 +08:00
publish.value = true
2024-06-17 09:39:01 +08:00
publishData.selectDate.url = data.imgUrl
2024-05-16 17:14:22 +08:00
publishData.subPublishDate = {
2024-06-17 09:39:01 +08:00
userLikeGroupId : data.userlikeGroupId,
// userLikeGroupId : data.id,
coverId : '',
// coverId : data.groupDetails[0].designOutfitId,
2024-05-16 17:14:22 +08:00
accountId : JSON.parse(userInfo).userId,
createDate:'',
idDeleted:'',
id:'',
portfolioDes:'',
2024-06-17 09:39:01 +08:00
portfolioName:'',
2024-05-16 17:14:22 +08:00
portfolioType:'History',
status:'',
updateDate:'',
collectionId:'',
2024-06-17 09:39:01 +08:00
// isAllowLikes:true,
2024-05-16 17:14:22 +08:00
}
2024-05-16 09:41:16 +08:00
}
2024-05-16 17:14:22 +08:00
let setCover = (item:any)=>{
publishData.subPublishDate.coverId = item.designOutfitId
publishData.selectDate.url = item.url
2024-05-16 09:41:16 +08:00
}
2024-06-17 09:39:01 +08:00
let setPermissionsItem = ()=>{
// publishData.selectPermissions.isAllowLikes &&
if(publishData.selectPermissions.isAllowComment && publishData.selectPermissions.isDisplayArea && publishData.selectPermissions.isSecondaryCreation){
publishData.setPermissionsAll = true
}else{
publishData.setPermissionsAll = false
}
}
let setPermissions = ()=>{
// publishData.selectPermissions.isAllowLikes = publishData.setPermissionsAll;
publishData.selectPermissions.isAllowComment = publishData.setPermissionsAll
publishData.selectPermissions.isDisplayArea = publishData.setPermissionsAll
publishData.selectPermissions.isSecondaryCreation = publishData.setPermissionsAll
}
2024-05-16 17:14:22 +08:00
let cleardata = ()=>{
2024-05-16 09:41:16 +08:00
publish.value = false
2024-05-16 17:14:22 +08:00
publishData.isShowMark = false
publishData.subPublishDate = {}
2024-05-16 09:41:16 +08:00
}
let cancelDsign = ()=>{
Modal.confirm({
2024-06-21 10:30:09 +08:00
title: t('Publish.jsContent1'),
2024-05-16 09:41:16 +08:00
icon: createVNode(ExclamationCircleOutlined),
okText: 'Yes',
cancelText: 'No',
mask:false,
centered:true,
onOk() {
2024-05-16 17:14:22 +08:00
cleardata()
2024-05-16 09:41:16 +08:00
}
});
}
let setPublish= ()=>{
2024-06-17 09:39:01 +08:00
if(!publishData.subPublishDate.portfolioName){
2024-06-21 10:30:09 +08:00
return message.info(t('Publish.jsContent2'))
2024-06-17 09:39:01 +08:00
}
// if(!publishData.subPublishDate.portfolioDes){
// return message.info('Please enter a description')
// }
2024-05-16 09:41:16 +08:00
Modal.confirm({
2024-06-21 10:30:09 +08:00
title: t('Publish.jsContent3'),
2024-05-16 09:41:16 +08:00
icon: createVNode(ExclamationCircleOutlined),
okText: 'Yes',
cancelText: 'No',
mask:false,
centered:true,
onOk() {
2024-05-16 17:14:22 +08:00
subPublish()
2024-05-16 09:41:16 +08:00
}
});
}
2024-05-16 17:14:22 +08:00
let subPublish = ()=>{
2024-06-17 09:39:01 +08:00
let param = new FormData();
// let fill = dataURLtoFile(publishData.selectDate.url,'collection')
// let aa = new File([fill], 'collection' + ".jpg");
let file = base64ToFile(publishData.selectDate.url,'collection')
param.append('file',file)
publishData.subPublishDate.openSource = publishData.selectPermissions.isSecondaryCreation?1:0
param.append('data',JSON.stringify(publishData.subPublishDate))
let config:any = {headers:{'Content-Type':'multipart/form-data','Accept':'*/*' }}
// let data = publishData.subPublishDate
2024-05-16 17:14:22 +08:00
publishData.isShowMark = true
2024-06-17 09:39:01 +08:00
Https.axiosPost(Https.httpUrls.publish, param,config)
2024-05-16 17:14:22 +08:00
.then((rv) => {
cleardata()
publishData.isShowMark = false
emit('setPublish')
2024-06-21 10:30:09 +08:00
message.success(t('Publish.jsContent4'))
2024-07-08 09:42:21 +08:00
setBeenPublished()
2024-05-16 17:14:22 +08:00
})
.catch((rv) => {
publishData.isShowMark = false
});
}
2024-05-16 09:41:16 +08:00
return {
publish,
publishMask,
2024-05-16 17:14:22 +08:00
...toRefs(publishData),
2024-05-16 09:41:16 +08:00
// textarea,
// setCopy,
init,
2024-06-17 09:39:01 +08:00
setPermissionsItem,
setPermissions,
2024-05-16 09:41:16 +08:00
// download,
// setScaleImageIndex,
// LikeFile,
2024-05-16 17:14:22 +08:00
setCover,
2024-05-16 09:41:16 +08:00
cancelDsign,
setPublish,
};
},
data() {
return {
// moodTemplateId: "", //模板id
};
},
mounted() {
},
methods: {
},
});
</script>
<style lang="less">
.publish_modal {
.publish_page{
overflow-y: auto;
height: 100%;
&.publish_page::-webkit-scrollbar{display: none;}
}
.publish_content{
display: flex;
flex-direction: column;
height: 100%;
}
.publish_content_bottom{
--border-color: #c4c4c4;
display: flex;
justify-content: space-between;
flex: 1;
2024-06-17 09:39:01 +08:00
height: calc(100% - 10rem);
2024-05-16 09:41:16 +08:00
.publidh_left,.publidh_right{
display: flex;
flex-direction: column;
}
.publidh_content_item{
margin-bottom: 2rem;
.publidh_content_item_title{
font-weight: 600;
font-size: 1.8rem;
margin-bottom: 1rem;
}
.publidh_content_item_intro{
font-size: 1.4rem;
}
input{
width: 100%;
border-radius: 1rem;
height: 4rem;
padding-left: 2rem;
font-size: 2rem;
border: .2rem solid var(--border-color);
}
textarea{
flex: 1;
margin-top: var(--padding);
width: 100% !important;
height: 10rem !important;
border-radius: 1rem;
border: .2rem solid var(--border-color);
font-size: 1.8rem;
padding: 1rem;
color: #575757;
outline: none; /* 清除默认焦点样式 */
}
textarea:focus{
border: .2rem solid var(--border-color);
outline: none; /* 清除默认焦点样式 */
}
}
.publidh_content_item:last-child{
margin-bottom: 0;
}
.publidh_left{
width: 45%;
2024-06-17 09:39:01 +08:00
.publidh_content_item{
height: 100%;
}
2024-05-16 09:41:16 +08:00
.publish_content_shrink{
width: 100%;
2024-06-17 09:39:01 +08:00
height: calc(100% - 4rem);
2024-05-16 09:41:16 +08:00
img{
width: 100%;
object-fit: contain;
2024-06-17 09:39:01 +08:00
// object-fit: cover;
// max-height: 30rem;
max-height: 100%;
2024-05-16 09:41:16 +08:00
}
}
.publidh_left_thubnai{
flex: 1;
.publidh_left_thubnail_list{
display: flex;
overflow-x: auto;
height: 24rem;
img{
2024-05-16 17:14:22 +08:00
cursor: pointer;
2024-05-16 09:41:16 +08:00
height: 100%;
margin-right: 1rem;
}
img:last-child{
margin-right: 0;
}
}
}
}
.publidh_right{
width: 45%;
2024-05-16 17:14:22 +08:00
.publidh_right_zhuyi{
2024-05-16 09:41:16 +08:00
margin-top: auto;
2024-05-16 17:14:22 +08:00
}
.publidh_right_btn{
2024-05-16 09:41:16 +08:00
display: flex;
align-items: center;
justify-content: flex-end;
>div:nth-child(1){
margin-right: auto;
}
>div:nth-child(2){
margin-right: 1rem;
}
}
2024-06-17 09:39:01 +08:00
.publidh_right_detail{
display: flex;
flex-direction: column;
label{
display: flex;
}
}
2024-05-16 09:41:16 +08:00
}
}
}
</style>