Files
XiaoLingHou_web/pages/editor-letter/editor-letter.vue
2023-12-29 00:08:10 +08:00

285 lines
6.6 KiB
Vue
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="uni-page">
<u-navbar placeholder :autoBack="true" bgColor="#fff0e7" title="编辑书信" />
<view class="letter-content">
<textarea input-mode="multiline" :maxlength="-1" v-model="letterData" :autoHeight="true" placeholder="请输入内容"
border="bottom"></textarea>
</view>
<view class="signature-time">
<view class="signature">
<!-- <u--textarea :maxlength="10" class="signature-input" v-model="letterAthor" placeholder="请输入署名"
border="bottom"></u--textarea> -->
<u--input style="white-space: pre-wrap;" inputAlign="center" placeholder="请输入署名" v-model="letterAthor"
border="bottom" :customStyle="{
width:'200rpx'
}">
</u--input>
</view>
<view class="time">
<!-- {{typeof new Date}} -->
{{ currentTime }}
</view>
</view>
<view class="img-list-box">
<u-upload :fileList="fileList" @afterRead="afterRead" @delete="deletePic" name="3" multiple :maxCount="10"
:previewFullImage="true">
<view class="upload-box">
<view class="plus-circle">
<u-icon name="plus-circle" color="#e49458" size="35"></u-icon>
<view style="margin-top:10rpx;">
添加照片
</view>
</view>
</view>
</u-upload>
</view>
<view class="photo-explain">
<SelectProductionMethod @selectPlan="selectPlan" @close="isShowNextBox=false" v-if="isShowNextBox">
</SelectProductionMethod>
说明照片会相纸打印随信一起寄出首张照片免费多出部分每张费用按以下顺序改变
{{$store.photoPrice?$store.photoPrice.photo_artificial:''}}
超出的按最后一个价格延续
</view>
<view class="bottom-button">
<view class="to-view-button" @click="toView">
<u-icon name="eye" color="#222222" size="28" style="margin-right:10px;"></u-icon>书信预览
</view>
<view class="nextstep-button" @click="toNextStep">
下一步
</view>
</view>
</view>
</template>
<script>
import {
uploadFile
} from '@/request/api.js'
import {
getPhotoPriceApi
} from '@/request/wm.js'
import SelectProductionMethod from '@/components/SelectProductionMethod/SelectProductionMethod.vue'
export default {
components: {
SelectProductionMethod
},
data() {
return {
letterData: '',
letterAthor: '',
fileList: [],
isShowNextBox: false,
currentTime: (new Date).$formatDate()
}
},
onLoad(opt) {
if (opt.clear) {
this.$set(this.$store, 'letterInfo', {})
}
this.getPhotoPrice()
this.letterData = this.$store.letterInfo.message
console.log(this.letterData);
},
methods: {
deletePic(event) {
this.fileList.splice(event.index, 1)
},
async afterRead(event) {
console.log(event);
let lists = [].concat(event.file)
let fileListLen = this.fileList.length;
lists.map((item) => {
this.fileList.push({
...item,
status: 'uploading',
message: '上传中'
})
})
let res = await uploadFile(event.file[0].url);
console.log(res);
if (res.data.code === 1) {
let item = this.fileList[fileListLen];
this.fileList.splice(fileListLen, 1, Object.assign(item, {
status: 'success',
message: '',
url: res.data.data.fullurl
}))
}
},
toView() {
// 这里要发送请求获取预览的拦截
// uni.showLoading({
// title: '加载中'
// });
this.$store.letterViewInfo.message = this.letterData;
this.$store.letterViewInfo.letterAthor = this.letterAthor;
this.$store.letterViewInfo.currentTime = this.currentTime;
this.$store.letterViewInfo.fileList = this.fileList;
console.log(this.$store.letterViewInfo);
uni.navigateTo({
url: "pages/letter-view/letter-view",
})
// this.isViewLetter = true
},
toNextStep() {
this.isShowNextBox = true
},
async getPhotoPrice() {
let {
data
} = await getPhotoPriceApi()
this.$set(this.$store, 'photoPrice', data.data)
this.$store.productionType.forEach(item => {
console.log(data.data[item.key],'111111111111111');
let price = data.data[item.key]?.find(price => {
if (+price > 0) {
return true
}
})
item.price = price || 0
})
console.log(this.$store.productionType, 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaa');
},
selectPlan(item) {
this.$store.letterInfo.message = this.letterData;
this.$store.letterInfo.mail_type = item.id
this.$store.letterInfo.thumb = this.fileList.map(item => {
return item.url
})
this.$store.letterInfo.affix = this.letterAthor
uni.navigateTo({
url: 'pages/confirmOrder/confirmOrder?plan=' + item.id,
})
}
},
}
</script>
<style scoped lang="scss">
.uni-page {
display: flex;
flex-direction: column;
position: relative;
}
.letter-content {
padding: 30rpx;
background-color: rgba(255, 255, 255, 0.5);
border-radius: 20rpx;
height: fit-content;
flex: 1;
margin-top: 20rpx;
textarea {
// min-height: 300rpx;
width: 100%;
background-color: transparent;
}
}
::v-deep.signature-input {
max-width: 300rpx;
width: 300rpx;
text-align: center;
height: 30rpx;
border-bottom: unset;
// text-align: center;
background-color: transparent;
textarea {
height: 30rpx;
}
}
.signature-time {
margin-top: 10rpx;
display: flex;
flex-direction: column;
justify-content: end;
text-align: center;
align-items: flex-end;
;
.time,
.signature {
width: 300rpx;
text-align: center;
display: flex;
justify-content: center;
}
>view {
width: fit-content;
// width: 250px;
text-align: center;
}
}
.upload-box {
width: 150rpx;
height: 150rpx;
border-radius: 20rpx;
background-color: #fffdfc;
color: #CE7A2C;
font-size: 25rpx;
font-weight: 500;
}
.plus-circle {
height: 100%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.photo-explain {
height: 100rpx;
margin-top: 20rpx;
font-size: 26rpx;
font-weight: 400;
color: #9f9a97;
margin-bottom: 150rpx;
}
.bottom-button {
position: fixed;
bottom: 10rpx;
width: calc(100% - 40rpx);
display: flex;
z-index: 11;
}
.to-view-button {
width: 459rpx;
min-height: 98rpx;
background-color: #ffe4d9;
border-radius: 20rpx;
display: flex;
align-items: center;
justify-content: center;
margin-right: 30rpx;
}
.nextstep-button {
flex: 1;
background: linear-gradient(to bottom right, #e8b648, #e08745);
min-height: 98rpx;
border-radius: 20rpx;
color: white;
font-size: 30rpx;
display: flex;
align-items: center;
justify-content: center;
}
.nextstep-button:hover {
background-color: black;
}
</style>