Files
xdd-uniapp-new/pkg_join/views/experienceStore.vue
T

972 lines
28 KiB
Vue
Raw 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="container">
<view
v-if="form.reviewStatus === 2"
class="v12-pa-2 reason-box"
>
驳回原因: {{ form.reviewMsg }}
</view>
<view
v-if="form.isDraft === 0 && form.reviewStatus === 0"
class="v12-pa-2 reason-box"
>
审核中请耐心等待审核结果
</view>
<view class="form-item">
<view class="title">
<text class="required">* </text>
名称:
</view>
<view class="input">
<u-textarea
v-model="form.name"
border="none"
:disabled="form.isDraft === 0 && (form.reviewStatus === 0 || form.reviewStatus === 1)"
placeholder="请输入名称"
:placeholder-style="inputPlaceholderStyle"
/>
</view>
</view>
<view class="form-item v12-mt-2 v12-d-flex v12-justify-start">
<view>
<view class="title">
<text class="required">* </text>
主图:
</view>
<view class="input">
<u-upload
:fileList="coverImg.filter(item => item.url)"
:disabled="form.isDraft === 0 && (coverImg.length > 0 || form.reviewStatus === 0 || form.reviewStatus === 1)"
:deletable="form.isDraft === 1 || (form.reviewStatus !== 0 && form.reviewStatus !== 1)"
:maxCount="1"
count="1"
name="coverImg"
multiple
@afterRead="afterRead($event, 'coverImg')"
@delete="deletePic($event, 'coverImg')"
/>
</view>
</view>
<view class="v12-ml-2">
<view class="title">
<text class="required">* </text>
头像:
</view>
<view class="input">
<u-upload
:fileList="avatarImg.filter(item => item.url)"
:disabled="form.isDraft === 0 && (avatarImg.length > 0 || form.reviewStatus === 0 || form.reviewStatus === 1)"
:deletable="form.isDraft === 1 || (form.reviewStatus !== 0 && form.reviewStatus !== 1)"
:maxCount="1"
count="1"
name="avatarImg"
multiple
@afterRead="afterRead($event, 'avatarImg')"
@delete="deletePic($event, 'avatarImg')"
/>
</view>
</view>
</view>
<view class="form-item v12-mt-2">
<view class="title">
<text class="required">* </text>
轮播图:
</view>
<view class="input">
<u-upload
:fileList="bannerImg"
:disabled="form.isDraft === 0 && (bannerImg.length > 8 || form.reviewStatus === 0 || form.reviewStatus === 1)"
:deletable="form.isDraft === 1 || (form.reviewStatus !== 0 && form.reviewStatus !== 1)"
:maxCount="9"
count="9"
name="bannerImg"
multiple
@afterRead="afterRead($event, 'bannerImg')"
@delete="deletePic($event, 'bannerImg')"
/>
</view>
</view>
<view class="form-item v12-mt-2">
<view class="title">
视频:
</view>
<view class="input">
<u-upload
v-if="videos.length === 0"
accept="video"
multiple
:max-count="1"
:fileList="videos"
:disabled="form.isDraft === 0 && (videos.length > 0 || form.reviewStatus === 0 || form.reviewStatus === 1)"
:deletable="form.isDraft === 1 || (form.reviewStatus !== 0 && form.reviewStatus !== 1)"
count="1"
name="videoImg"
:previewFullImage="true"
@afterRead="afterRead($event, 'videos', 'video')"
@delete="deletePic($event, 'videos')"
/>
<view
v-else
class="video-wrapper"
>
<video
:src="videos[0].url"
:poster="videos[0].url + '?vframe/jpg/offset/1'"
:controls="false"
play-btn-position="center"
class="video-item"
/>
<view
v-if="form.isDraft === 1 || (form.reviewStatus !== 0 && form.reviewStatus !== 1)"
class="delete-badge"
@click.stop="deleteVideo(0)"
>
x
</view>
</view>
</view>
</view>
<view class="form-item v12-mt-2 v12-d-flex v12-justify-start v12-align-center">
<view class="title">
<text class="required">* </text>
公司名称
</view>
<view
class="v12-ml-2"
style="flex: 1;"
>
<input
v-model="form.companyName"
type="text"
:placeholder-style="inputPlaceholderStyle"
:disabled="form.isDraft === 0 && (form.reviewStatus === 0 || form.reviewStatus === 1)"
placeholder="请输入公司名称"
/>
</view>
</view>
<u-divider />
<view class="form-item v12-mt-2 v12-d-flex v12-justify-start v12-align-center">
<view class="title">
<text class="required">* </text>
店铺分类
</view>
<view
class="v12-ml-2"
style="flex: 1;"
>
<picker
:value="experienceStoreCategoryIndex"
:range="experienceStoreCategoryList"
:disabled="form.isDraft === 0 && (form.reviewStatus === 0 || form.reviewStatus === 1)"
range-key="name"
mode="selector"
@change="handleCategoryChange"
>
<view class="one-t">
<text :style="{'color': form.experienceStoreCategoryName ? '#333' : '#999999'}">
{{ form.experienceStoreCategoryName || '请选择店铺分类' }}
</text>
</view>
</picker>
</view>
</view>
<u-divider />
<view class="form-item v12-mt-2 v12-d-flex v12-justify-start v12-align-center">
<view class="title">
<text class="required">* </text>
简介
</view>
<view
class="v12-ml-2"
style="flex: 1;"
>
<input
v-model="form.intro"
type="text"
:disabled="form.isDraft === 0 && (form.reviewStatus === 0 || form.reviewStatus === 1)"
:placeholder-style="inputPlaceholderStyle"
placeholder="请输入简介"
/>
</view>
</view>
<u-divider />
<view class="form-item v12-mt-2 v12-d-flex v12-justify-start v12-align-center">
<view class="title">
<text class="required">* </text>
联系人
</view>
<view
class="v12-ml-2"
style="flex: 1;"
>
<input
v-model="form.contact"
type="text"
:placeholder-style="inputPlaceholderStyle"
:disabled="form.isDraft === 0 && (form.reviewStatus === 0 || form.reviewStatus === 1)"
placeholder="请输入联系人姓名"
/>
</view>
</view>
<u-divider />
<view
class="form-item v12-mt-2 v12-d-flex v12-justify-start v12-align-center"
@click="showTimePicker"
>
<view class="title">
<text class="required">* </text>
营业时间
</view>
<view class="v12-ml-2">
<view>
<text :style="{'color': form.serviceTime ? '#333' : '#999999'}">
{{ form.serviceTime || '起始时间' }}
</text>
-
<text :style="{'color': form.serviceEndTime ? '#333' : '#999999'}">
{{ form.serviceEndTime || '结束时间' }}
</text>
</view>
<tpf-time-range
ref="TimePickerPopupRef"
startTime="00:00"
endTime="23:59"
:disabled="form.isDraft === 0 && (form.reviewStatus === 0 || form.reviewStatus === 1)"
:startDefaultTime="form.serviceTime"
:endDefaultTime="form.serviceEndTime"
@timeRange="timeRange"
/>
</view>
</view>
<u-divider />
<view class="form-item v12-mt-2 v12-d-flex v12-justify-start v12-align-center">
<view class="title">
<text class="required">* </text>
省市区
</view>
<view
class="v12-ml-2 one-t"
style="flex: 1;"
>
<CitySelect
ref="cityselect"
:disabled="form.isDraft === 0 && (form.reviewStatus === 0 || form.reviewStatus === 1)"
:defaultValue="form.area || '请选择'"
:items="district"
@callback="resultCity"
/>
</view>
</view>
<u-divider />
<view class="form-item v12-mt-2 v12-d-flex v12-justify-start v12-align-center">
<view class="title">
<text class="required">* </text>
详细地址
</view>
<view
class="v12-ml-2"
style="flex: 1;"
>
<input
v-model="form.address"
:placeholder-style="inputPlaceholderStyle"
:disabled="form.isDraft === 0 && (form.reviewStatus === 0 || form.reviewStatus === 1)"
type="text"
placeholder="请输入详细地址"
/>
</view>
</view>
<u-divider />
<view
class="form-item v12-mt-2 v12-d-flex v12-justify-start v12-align-center"
@click="chooLocation"
>
<view class="title">
<text class="required">* </text>
地理定位
</view>
<view
class="v12-ml-2"
style="flex: 1;"
>
<u--text
v-if="form.position"
:text="form.position"
/>
<u--text
v-else
text="请选择"
color="#c0c4cc"
/>
</view>
</view>
<u-divider />
<view class="form-item v12-mt-2 v12-d-flex v12-justify-start v12-align-center">
<view class="title">
<text class="required">* </text>
商家电话
</view>
<view
class="v12-ml-2"
style="flex: 1;"
>
<u-input
v-model="form.phone"
type="text"
:placeholder-style="inputPlaceholderStyle"
:disabled="form.isDraft === 0 && (form.reviewStatus === 0 || form.reviewStatus === 1)"
placeholder="请输入商家电话"
maxlength="11"
border="none"
>
<template slot="suffix">
<u-code
v-if="form.isDraft === 1 || (form.reviewStatus !== 0 && form.reviewStatus !== 1)"
ref="uCode"
seconds="30"
changeText="X秒重新获取"
@change="codeChange"
/>
<u-button
v-if="form.isDraft === 1 || (form.reviewStatus !== 0 && form.reviewStatus !== 1)"
:text="tips"
type="success"
color="#4A97FC"
@tap="getCode"
/>
</template>
</u-input>
</view>
</view>
<u-divider />
<view class="form-item v12-mt-2 v12-d-flex v12-justify-start v12-align-center">
<view class="title">
<text class="required">* </text>
填写验证码
</view>
<view
class="v12-ml-2"
style="flex: 1;"
>
<input
v-model="form.captcha"
type="text"
:placeholder-style="inputPlaceholderStyle"
:disabled="form.isDraft === 0 && (form.reviewStatus === 0 || form.reviewStatus === 1)"
placeholder="请输入验证码"
/>
</view>
</view>
<u-divider />
<view class="form-item v12-mt-2 v12-d-flex v12-justify-start v12-align-center">
<view class="title">
<!-- <text class="required">* </text> -->
商家微信
</view>
<view
class="v12-ml-2"
style="flex: 1;"
>
<input
v-model="form.wechat"
type="text"
:placeholder-style="inputPlaceholderStyle"
placeholder="请输入微信号"
:disabled="form.isDraft === 0 && (form.reviewStatus === 0 || form.reviewStatus === 1)"
/>
</view>
</view>
<u-divider />
<view class="form-item v12-mt-2">
<view class="title">
<text class="required">* </text>
资质:
</view>
<view class="input">
<u-upload
:fileList="qualificationImg"
:disabled="(form.isDraft === 0 && (form.reviewStatus === 0 || form.reviewStatus === 1)) || qualificationImg.length > 98"
:deletable="form.isDraft === 1 || (form.reviewStatus !== 0 && form.reviewStatus !== 1)"
:maxCount="99"
count="99"
name="qualificationImg"
multiple
@afterRead="afterRead($event, 'qualificationImg')"
@delete="deletePic($event, 'qualificationImg')"
/>
</view>
</view>
<view v-if="form.isDraft === 0 && form.reviewStatus !== 1">
<view
class="v12-primary v12-white-text submit-btn"
:style="{'background': form.reviewStatus === 0 ? '#FA979F !important' : '#4A97FC'}"
@click="submitForm"
>
{{ form.reviewStatus === 0 ? '撤销申请' : form.reviewStatus === 2 ? '重新提交' : '提交审核' }}
</view>
</view>
<view v-if="form.reviewStatus === null || (form.isDraft === 1 && form.reviewStatus === 0)">
<view
class="v12-primary v12-white-text submit-btn"
@click="submitForm"
>
提交审核
</view>
</view>
<u-popup
:show="show"
mode="center"
round="10"
@close="handlePopupClose"
>
<view class="popup-body">
<view class="tc bold">
入驻申请须知
</view>
<view class="content">
<rich-text :nodes="notice" />
</view>
<view class="agree-box v12-mb-2">
<checkbox-group @change="changeAgree">
<label>
<checkbox
value="yes"
style="transform:scale(0.8)"
/>
</label>
<text>我已仔细阅读并同意</text>
</checkbox-group>
</view>
<u-button
type="error"
text="确定"
@click="savePopup"
/>
</view>
</u-popup>
</view>
</template>
<script>
import CitySelect from '@/components/CitySelect'
import { getCity, registerVerify } from '@/api/user'
import { uploadVideo, uploadImage, formatRichText } from '@/utils'
import {
getShopData,
saveExperienceStore,
saveExperienceStoreDraft,
getExperienceStoreCategoryList,
getExperienceStoreInfo,
removeApply
} from '@/api/join'
export default {
components: {
CitySelect
},
data() {
return {
isAgree: false,
show: false,
notice: '',
tips: '获取验证码',
inputPlaceholderStyle: {
fontSize: '32rpx'
},
coverImg: [],
avatarImg: [],
bannerImg: [],
videos: [],
district: [],
qualificationImg: [],
partnerId: '',
promoterUid: '',
experienceStoreCategoryList: [],
experienceStoreCategoryIndex: 0,
form: {
captcha: '',
name: '',
cover: '',
avatar: '',
banner: '',
video: '',
companyName: '',
experienceStoreCategoryId: null,
experienceStoreCategoryName: '',
serviceTime: '00:00',
serviceEndTime: '23:59',
provinceId: 0,
provinceName: '',
cityId: 0,
cityName: '',
areaId: 0,
areaName: '',
address: '',
longitude: 0,
latitude: 0,
contact: '',
phone: '',
wechat: '',
qualification: '',
intro: '',
reviewMsg: '',
reviewStatus: null,
isDraft: null,
position: '',
area: ''
}
}
},
onLoad(opts) {
this.partnerId = opts.partnerId || ''
this.promoterUid = opts.promoterUid || ''
this.queryCity()
getShopData({partnerId: this.partnerId, promoterUid: this.promoterUid}).then(({ data }) => {
this.notice = formatRichText(data.merchantApplyNotice)
})
getExperienceStoreCategoryList().then(({ data }) => {
this.experienceStoreCategoryList = data || []
if (this.experienceStoreCategoryList.length > 0) {
this.experienceStoreCategoryIndex = 0
}
this.initInfo()
})
},
onUnload() {
this.saveDraft()
},
onHide() {
this.saveDraft()
},
methods: {
initInfo() {
getExperienceStoreInfo().then(res => {
const data = res.data || {}
const info = data.experienceStoreInfo || {}
if (!info || Object.keys(info).length === 0) {
this.form.isDraft = 1
this.show = true
return
}
this.form = { ...this.form, ...info }
this.coverImg = info.cover ? this.stringToMapArr(info.cover) : []
this.avatarImg = info.avatar ? this.stringToMapArr(info.avatar) : []
this.bannerImg = info.banner ? this.stringToMapArr(info.banner) : []
this.videos = info.video ? this.stringToMapArr(info.video) : []
this.qualificationImg = info.qualification ? this.stringToMapArr(info.qualification) : []
this.form.reviewStatus = data.reviewStatus != null ? data.reviewStatus : null
this.form.reviewMsg = data.reviewMsg || ''
this.form.isDraft = data.isDraft != null ? data.isDraft : null
this.form.latitude = info.latitude || 0
this.form.longitude = info.longitude || 0
this.form.position = this.form.longitude && this.form.latitude
? this.$forceToDecimal(this.form.longitude, 6) + ',' + this.$forceToDecimal(this.form.latitude, 6)
: ''
this.form.area = `${this.form.provinceName || ''} ${this.form.cityName || ''} ${this.form.areaName || ''}`.trim()
if (this.experienceStoreCategoryList && this.experienceStoreCategoryList.length > 0) {
const idx = this.experienceStoreCategoryList.findIndex(item => item.id === this.form.experienceStoreCategoryId)
if (idx !== -1) {
this.experienceStoreCategoryIndex = idx
this.form.experienceStoreCategoryName = this.experienceStoreCategoryList[idx].name
}
}
if (this.form.isDraft === 1 && (this.form.reviewStatus === null || this.form.reviewStatus === undefined)) {
this.show = true
}
}).catch(() => {
this.form.isDraft = 1
this.show = true
})
},
changeAgree(e) {
this.isAgree = e.detail.value.includes('yes')
},
savePopup() {
if (!this.isAgree) {
uni.showToast({
title: '请先阅读并同意入驻申请须知',
icon: 'none'
})
return
}
this.show = false
},
handlePopupClose() {
if (!this.isAgree) {
uni.showToast({
title: '请先阅读并同意入驻申请须知',
icon: 'none'
})
return
}
this.show = false
},
stringToMapArr(str, split = ',') {
return str.split(split).map(item => ({ url: item }))
},
saveDraft() {
this.form.cover = this.coverImg.filter(item => item.url).map(item => item.url).join(',')
this.form.avatar = this.avatarImg.filter(item => item.url).map(item => item.url).join(',')
this.form.banner = this.bannerImg.filter(item => item.url).map(item => item.url).join(',')
this.form.video = this.videos.filter(item => item.url).map(item => item.url).join(',')
this.form.qualification = this.qualificationImg.filter(item => item.url).map(item => item.url).join(',')
const params = {
experienceStoreInfo: { ...this.form },
partnerId: this.partnerId
}
saveExperienceStoreDraft(params).catch(err => {
uni.$u.toast(err.msg)
})
},
handleCategoryChange(e) {
const idx = parseInt(e.detail.value)
this.experienceStoreCategoryIndex = idx
const item = this.experienceStoreCategoryList[idx]
if (item) {
this.form.experienceStoreCategoryId = item.id
this.form.experienceStoreCategoryName = item.name
}
},
submitForm() {
if (this.form.reviewStatus === 0 && this.form.isDraft === 0) {
this.revokeExperienceStore()
return
}
this.form.cover = this.coverImg.filter(item => item.url).map(item => item.url).join(',')
this.form.avatar = this.avatarImg.filter(item => item.url).map(item => item.url).join(',')
this.form.banner = this.bannerImg.filter(item => item.url).map(item => item.url).join(',')
this.form.video = this.videos.filter(item => item.url).map(item => item.url).join(',')
this.form.qualification = this.qualificationImg.filter(item => item.url).map(item => item.url).join(',')
if (!this.form.name) {
uni.$u.toast('请输入名称')
return
}
if (!this.form.cover) {
uni.$u.toast('请上传主图')
return
}
if (!this.form.avatar) {
uni.$u.toast('请上传头像')
return
}
if (!this.form.banner) {
uni.$u.toast('请上传轮播图')
return
}
if (!this.form.companyName) {
uni.$u.toast('请输入公司名称')
return
}
if (!this.form.experienceStoreCategoryId) {
uni.$u.toast('请选择店铺分类')
return
}
if (!this.form.intro) {
uni.$u.toast('请输入简介')
return
}
if (!this.form.serviceTime) {
uni.$u.toast('请选择营业开始时间')
return
}
if (!this.form.serviceEndTime) {
uni.$u.toast('请选择营业结束时间')
return
}
if (!this.form.provinceId) {
uni.$u.toast('请选择省份')
return
}
if (!this.form.cityId) {
uni.$u.toast('请选择城市')
return
}
if (!this.form.areaId) {
uni.$u.toast('请选择区域')
return
}
if (!this.form.address) {
uni.$u.toast('请输入详细地址')
return
}
if (!this.form.longitude || !this.form.latitude) {
uni.$u.toast('请选择地理定位')
return
}
if (!this.form.qualification) {
uni.$u.toast('请上传资质')
return
}
if (!this.form.contact) {
uni.$u.toast('请输入联系人姓名')
return
}
if (!this.form.phone) {
uni.$u.toast('请输入手机号')
return
}
if (!this.form.captcha) {
uni.$u.toast('请输入验证码')
return
}
// if (!this.form.wechat) {
// uni.$u.toast('请输入联系微信')
// return
// }
const params = {
experienceStoreInfo: { ...this.form },
partnerId: this.partnerId,
captcha: this.form.captcha
}
saveExperienceStore(params).then(res => {
if (res.status === 200) {
uni.showToast({
title: '您的入驻申请已提交成功,请耐心等待审核',
icon: 'none',
success: () => {
this.form.isDraft = 0
this.form.reviewStatus = 0
this.show = false
}
})
}
}).catch(err => {
uni.$u.toast(err.msg)
})
},
revokeExperienceStore() {
uni.showModal({
title: '提示',
content: '确定撤销申请吗?',
success: res => {
if (res.confirm) {
removeApply().then(result => {
if (result.status === 200) {
uni.$u.toast('撤销申请成功')
this.form.reviewStatus = null
this.form.isDraft = 1
this.show = true
this.initInfo()
} else {
uni.$u.toast(result.msg || '撤销失败')
}
}).catch(err => {
uni.$u.toast(err.msg)
})
}
}
})
},
getCode() {
if (!this.form.phone) {
uni.$u.toast('请输入手机号')
return
}
if (this.form.phone.length !== 11) {
uni.$u.toast('请输入11位手机号')
return
}
if (this.$refs.uCode && this.$refs.uCode.canGetCode) {
uni.showLoading({
title: '正在获取验证码'
})
registerVerify({
phone: this.form.phone,
type: 'merchantExperienceStoreApply'
}).then(() => {
uni.hideLoading()
uni.$u.toast('验证码已发送')
this.$refs.uCode.start()
}).catch(err => {
uni.hideLoading()
uni.$u.toast(err.msg)
})
} else {
uni.$u.toast('倒计时结束后再发送')
}
},
codeChange(text) {
this.tips = text
},
chooLocation() {
if (this.form.isDraft === 0 && (this.form.reviewStatus === 0 || this.form.reviewStatus === 1)) {
return
}
uni.chooseLocation({
success: res => {
this.form.address = res.address
this.form.longitude = this.$forceToDecimal(res.longitude, 6)
this.form.latitude = this.$forceToDecimal(res.latitude, 6)
this.form.position = this.$forceToDecimal(res.longitude, 6) + ',' + this.$forceToDecimal(res.latitude, 6)
}
})
},
resultCity(values) {
const address = {
province: values.province.name || '',
city: values.city.name || '',
district: values.district.name || '',
provinceId: values.province.id,
cityId: values.city.id,
areaId: values.district.id
}
this.form.area = `${address.province || ''} ${address.city || ''} ${address.district || ''}`
this.form.areaName = address.district || ''
this.form.provinceName = address.province || ''
this.form.cityName = address.city || ''
this.form.provinceId = address.provinceId
this.form.cityId = address.cityId
this.form.areaId = address.areaId
},
queryCity() {
getCity().then(({ data }) => {
this.district = data
})
},
showTimePicker() {
if (this.form.isDraft === 0 && (this.form.reviewStatus === 0 || this.form.reviewStatus === 1)) {
return
}
this.$refs.TimePickerPopupRef.open()
},
timeRange(e) {
this.form.serviceTime = e[0]
this.form.serviceEndTime = e[1]
this.$forceUpdate()
},
afterRead(e, imgField, type) {
const uploadFunc = type === 'video' ? uploadVideo : uploadImage
if (e.file.length > 0) {
e.file.forEach(item => {
if (!item.url) return
uploadFunc(item.url, img => {
if (!img) return
this[imgField].push({ url: img })
})
})
}
},
deleteVideo(index) {
if (this.form.isDraft === 0 && (this.form.reviewStatus === 0 || this.form.reviewStatus === 1)) {
return
}
uni.showModal({
title: '确认删除',
content: '确定删除该视频?',
success: res => {
if (res.confirm) {
this.deletePic({ index }, 'videos')
}
}
})
},
deletePic(e, imgField) {
if (this.form.isDraft === 0 && (this.form.reviewStatus === 0 || this.form.reviewStatus === 1)) {
return
}
this[imgField].splice(e.index, 1)
}
}
}
</script>
<style scoped lang="scss">
.popup-body {
width: 80vw;
height: 80vh;
padding: 30rpx;
overflow: hidden;
}
.popup-body .content {
height: 52vh;
overflow-y: auto;
margin: 30rpx 0;
// 小程序rich-text内块级标签无默认段间距,补充与后台富文本编辑器一致的段落格式
::v-deep rich-text {
display: block;
width: 100%;
p, div, ul, ol {
display: block;
margin: 0 0 16rpx;
&:last-child {
margin-bottom: 0;
}
}
li {
margin: 0 0 8rpx;
}
}
}
.popup-body .agree-box {
margin: 60rpx 0;
font-size: 28rpx;
color: #666;
}
.popup-body {
.title {
line-height: 80rpx;
text-align: center;
}
}
.container {
padding: 20rpx;
background: #fff;
}
.title {
font-size: 32rpx;
font-weight: 500;
color: #333;
}
.required {
color: #c52733;
}
.input {
margin-top: 20rpx;
}
.submit-btn {
width: 100%;
height: 100rpx;
text-align: center;
line-height: 100rpx;
}
.reason-box {
background: rgba(255, 160, 167, 0.39);
border-radius: 8rpx;
color: #c52733;
font-size: 30rpx;
margin-bottom: 20rpx;
}
.title {
white-space: nowrap;
}
.video-item {
width: 160rpx;
height: 160rpx;
}
.video-wrapper {
position: relative;
display: inline-block;
}
.delete-badge {
position: absolute;
top: 0rpx;
right: 0rpx;
background: #000;
color: #fff;
padding: 2rpx 8rpx;
border-radius: 0 0 0rpx 200rpx;
font-size: 22rpx;
z-index: 10;
text-align: center;
}
</style>
<style>
.input .u-textarea {
background-color: #F3F3F3 !important;
}
</style>