裂变星小程序-25.03.04
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

186 lines
5.2 KiB

<template>
<view class="page">
<navbar title="文章分享" leftClick @leftClick="$utils.navigateBack" />
<view class="content">
<uv-form
ref="form"
:model="form"
:rules="rules"
labelPosition="left"
labelWidth="300rpx"
:labelStyle="{
color: '#1B1B1B',
fontSize: '32rpx',
fontWeight: 'bold',
}"
>
<view class="form-item">
<uv-form-item label="用户ID" prop="id">
<view class="form-item-content">
<template v-if="form.id">
<text>{{ form.id }}</text>
<view style="margin-left: 20rpx;">
<button class="btn-simple" plain @click="$utils.copyText(form.id)">
<uv-icon name="file-text" color="#05D9A2" size="28rpx"></uv-icon>
</button>
</view>
</template>
</view>
</uv-form-item>
</view>
<view class="form-item">
<uv-form-item label="选择封面图" prop="imageUrl">
<view class="form-item-content">
<formUpload v-model="form.imageUrl">
<template v-slot="{ value }">
<view class="flex" style="min-width: 116rpx; height: 45rpx;">
<image
:src="value"
mode="aspectFill"
style="width: 68rpx; height: 68rpx;"
radius="14rpx"
/>
<uv-icon style="margin-left: 20rpx" name="arrow-right" color="#000000" size="28rpx"></uv-icon>
</view>
</template>
</formUpload>
</view>
</uv-form-item>
</view>
<view class="form-item">
<uv-form-item label="标题" labelWidth="84rpx" prop="title">
<view class="form-item-content">
<formInput v-model="form.title" placeholder="请输入你的文章标题" width="584rpx"></formInput>
</view>
</uv-form-item>
</view>
<view class="form-item">
<uv-form-item label="设置转发次数(次)" prop="times">
<view class="form-item-content">
<formNumberBox v-model="form.times" ></formNumberBox>
</view>
</uv-form-item>
</view>
<view class="form-item">
<uv-form-item label="选择二维码" prop="qrCode">
<view class="form-item-content">
<formUpload v-model="form.qrCode">
<template v-slot="{ value }">
<view class="flex" style="min-width: 93rpx; height: 45rpx;">
<image
:src="value"
mode="aspectFill"
style="width: 45rpx; height: 45rpx;"
radius="14rpx"
/>
<uv-icon style="margin-left: 20rpx" name="arrow-right" color="#000000" size="28rpx"></uv-icon>
</view>
</template>
</formUpload>
</view>
</uv-form-item>
</view>
<view class="form-item">
<uv-form-item label="文章内容" prop="description" labelPosition="top">
<view style="margin-top: 32rpx;">
<editor id="editor" class="editor"
@ready="onEditorReady"
></editor>
<button @click="insertImage" class="btn-insert-image">
<uv-icon name="plus" color="#707070" size="48rpx"></uv-icon>
</button>
</view>
</uv-form-item>
</view>
</uv-form>
</view>
<button class="button-submit" @click="onSubmit">
提交审核
</button>
</view>
</template>
<script>
import formInput from '../components/formInput.vue'
import formNumberBox from '../components/formNumberBox.vue'
import formUpload from '../components/formUpload.vue'
import formTextarea from '../components/formTextarea.vue'
export default {
components: {
formInput,
formNumberBox,
formUpload,
formTextarea,
},
data() {
return {
form: {
id: null,
imageUrl: null,
title: null,
times: 10,
qrCode: null,
description: null,
},
rules: {
// todo
},
editorCtx: null,
}
},
methods: {
onEditorReady() {
uni.createSelectorQuery().select('#editor').context((res) => {
this.editorCtx = res.context
}).exec()
},
insertImage() {
uni.chooseImage({
count: 1,
success: (res) => {
this.editorCtx.insertImage({
src: res.tempFilePaths[0],
alt: '图像',
})
}
})
},
onSubmit() {
// todo
const params = { ...this.form }
this.$api('submitPersonalSharing', params)
},
}
}
</script>
<style scoped lang="scss">
@import '../styles/pageForm.scss';
.editor {
height: 411rpx;
}
.btn-simple {
width: auto;
height: auto;
border: none;
box-shadow: none;
padding: 0;
}
.button-submit {
margin: 0;
position: fixed;
bottom: 138rpx;
left: 20rpx;
width: calc(100% - 40rpx);
height: 90rpx;
}
</style>