|
@ -1,56 +1,53 @@ |
|
|
<template> |
|
|
<template> |
|
|
<view class="task-upload"> |
|
|
<view class="task-upload"> |
|
|
<!-- 驳回原因提示 --> |
|
|
|
|
|
<view class="reject-tip" v-if="isRejected"> |
|
|
|
|
|
<text>拒绝原因:{{taskInfo.rejectReason || '部分任务要求不符合'}}</text> |
|
|
|
|
|
</view> |
|
|
|
|
|
|
|
|
|
|
|
<!-- 任务头部信息 --> |
|
|
<!-- 任务头部信息 --> |
|
|
<view class="task-header"> |
|
|
<view class="task-header"> |
|
|
<view class="task-title">{{taskInfo.title}}</view> |
|
|
<view class="task-title">{{taskInfo.title}}</view> |
|
|
<view class="task-deadline">请于{{taskInfo.deadline}}之前上传任务,超时将自动取消</view> |
|
|
|
|
|
|
|
|
<view class="task-deadline">请于{{taskInfo.taskEndTime ? formatDate(taskInfo.taskEndTime) : ''}}之前上传任务,超时将自动取消</view> |
|
|
|
|
|
</view> |
|
|
|
|
|
|
|
|
|
|
|
<!-- 驳回原因提示(如果任务被驳回) --> |
|
|
|
|
|
<view class="reject-box" v-if="isRejected"> |
|
|
|
|
|
<view class="reject-title">审核未通过原因:</view> |
|
|
|
|
|
<view class="reject-reason">{{taskInfo.examineText || '暂无驳回原因'}}</view> |
|
|
</view> |
|
|
</view> |
|
|
|
|
|
|
|
|
<!-- 上传表单 --> |
|
|
<!-- 上传表单 --> |
|
|
<view class="upload-form"> |
|
|
<view class="upload-form"> |
|
|
<view class="form-title">任务完成凭证</view> |
|
|
|
|
|
|
|
|
|
|
|
<!-- 笔记链接 --> |
|
|
|
|
|
|
|
|
<!-- 链接输入 --> |
|
|
<view class="form-item"> |
|
|
<view class="form-item"> |
|
|
<view class="item-label">笔记链接</view> |
|
|
|
|
|
<view class="item-content"> |
|
|
|
|
|
<u-textarea v-model="formData.noteLink" placeholder="猫妈狗爸" maxlength="300" height="120"></u-textarea> |
|
|
|
|
|
<view class="word-count">{{formData.noteLink.length || 0}}/300</view> |
|
|
|
|
|
|
|
|
<view class="form-label">笔记/视频链接</view> |
|
|
|
|
|
<view class="form-input"> |
|
|
|
|
|
<u-input v-model="formData.examineText" placeholder="请输入小红书/抖音等平台的笔记链接" /> |
|
|
</view> |
|
|
</view> |
|
|
</view> |
|
|
</view> |
|
|
|
|
|
|
|
|
<!-- 笔记截图 --> |
|
|
|
|
|
|
|
|
<!-- 图片上传 --> |
|
|
<view class="form-item"> |
|
|
<view class="form-item"> |
|
|
<view class="item-label">笔记截图 <text class="required">*</text></view> |
|
|
|
|
|
<view class="item-content"> |
|
|
|
|
|
|
|
|
<view class="form-label">证明截图</view> |
|
|
|
|
|
<view class="form-notice">请上传任务完成的截图证明,例如发布成功的截图</view> |
|
|
|
|
|
<view class="upload-box"> |
|
|
<u-upload |
|
|
<u-upload |
|
|
:fileList="fileList" |
|
|
:fileList="fileList" |
|
|
@afterRead="afterRead" |
|
|
@afterRead="afterRead" |
|
|
@delete="deletePic" |
|
|
@delete="deletePic" |
|
|
:maxCount="6" |
|
|
|
|
|
name="1" |
|
|
|
|
|
:multiple="true" |
|
|
|
|
|
:maxSize="10 * 1024 * 1024" |
|
|
|
|
|
|
|
|
name="examineImage" |
|
|
|
|
|
multiple |
|
|
|
|
|
:maxCount="3" |
|
|
></u-upload> |
|
|
></u-upload> |
|
|
<view class="upload-tips">请上传任务完成的截图凭证,最多6张,每张不超过10MB</view> |
|
|
|
|
|
</view> |
|
|
</view> |
|
|
</view> |
|
|
</view> |
|
|
</view> |
|
|
|
|
|
|
|
|
|
|
|
<!-- 提交按钮 --> |
|
|
|
|
|
<view class="submit-btn"> |
|
|
|
|
|
<u-button type="primary" color="#ffaa48" text="确认上传" @click="submitTaskHandler"></u-button> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<!-- 提交按钮 --> |
|
|
|
|
|
<view class="submit-btn"> |
|
|
|
|
|
<u-button type="primary" color="#ffaa48" shape="circle" @click="submitTaskHandler">提交审核</u-button> |
|
|
|
|
|
</view> |
|
|
</view> |
|
|
</view> |
|
|
</view> |
|
|
</view> |
|
|
</template> |
|
|
</template> |
|
|
|
|
|
|
|
|
<script> |
|
|
<script> |
|
|
import { getTaskDetail, submitTask } from "@/api/system/task.js" |
|
|
|
|
|
|
|
|
import { getTaskDetail, submitTask } from "@/api/order/task.js" |
|
|
export default { |
|
|
export default { |
|
|
data() { |
|
|
data() { |
|
|
return { |
|
|
return { |
|
@ -60,12 +57,15 @@ |
|
|
taskInfo: { |
|
|
taskInfo: { |
|
|
id: 0, |
|
|
id: 0, |
|
|
title: '', |
|
|
title: '', |
|
|
deadline: '', |
|
|
|
|
|
rejectReason: '' |
|
|
|
|
|
|
|
|
taskEndTime: '', |
|
|
|
|
|
examineText: '', |
|
|
|
|
|
taskState: 0, |
|
|
|
|
|
examineState: 0 |
|
|
}, |
|
|
}, |
|
|
formData: { |
|
|
formData: { |
|
|
noteLink: '', |
|
|
|
|
|
images: [] |
|
|
|
|
|
|
|
|
taskId: 0, |
|
|
|
|
|
examineImage: [], |
|
|
|
|
|
examineText: '', |
|
|
}, |
|
|
}, |
|
|
fileList: [] |
|
|
fileList: [] |
|
|
} |
|
|
} |
|
@ -73,6 +73,7 @@ |
|
|
onLoad(options) { |
|
|
onLoad(options) { |
|
|
if (options.id) { |
|
|
if (options.id) { |
|
|
this.taskId = options.id |
|
|
this.taskId = options.id |
|
|
|
|
|
this.formData.taskId = options.id |
|
|
this.taskStatus = options.status || '' |
|
|
this.taskStatus = options.status || '' |
|
|
this.isRejected = this.taskStatus === 'REJECTED' |
|
|
this.isRejected = this.taskStatus === 'REJECTED' |
|
|
this.getTaskDetail() |
|
|
this.getTaskDetail() |
|
@ -89,85 +90,193 @@ |
|
|
methods: { |
|
|
methods: { |
|
|
getTaskDetail() { |
|
|
getTaskDetail() { |
|
|
// 获取任务详情 |
|
|
// 获取任务详情 |
|
|
// 实际项目中取消注释下面的代码 |
|
|
|
|
|
/* |
|
|
|
|
|
getTaskDetail(this.taskId).then(res => { |
|
|
getTaskDetail(this.taskId).then(res => { |
|
|
if (res && res.code === 200) { |
|
|
if (res && res.code === 200) { |
|
|
this.taskInfo = res.data |
|
|
this.taskInfo = res.data |
|
|
|
|
|
|
|
|
|
|
|
// 如果任务已有审核文本,填充到表单 |
|
|
|
|
|
if (res.data.examineText) { |
|
|
|
|
|
this.formData.examineText = res.data.examineText; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 如果任务已有图片,添加到文件列表显示 |
|
|
|
|
|
if (res.data.examineImage) { |
|
|
|
|
|
const imageUrls = res.data.examineImage.split(','); |
|
|
|
|
|
imageUrls.forEach(url => { |
|
|
|
|
|
if (url) { |
|
|
|
|
|
this.fileList.push({ |
|
|
|
|
|
url: url, |
|
|
|
|
|
status: 'success', |
|
|
|
|
|
message: '已上传', |
|
|
|
|
|
isImage: true |
|
|
|
|
|
}); |
|
|
|
|
|
// 同时更新formData中的图片数组 |
|
|
|
|
|
this.formData.examineImage.push(url); |
|
|
|
|
|
} |
|
|
|
|
|
}); |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
}) |
|
|
}) |
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
// 模拟数据 |
|
|
|
|
|
const mockData = { |
|
|
|
|
|
id: this.taskId, |
|
|
|
|
|
title: '发布小红书宣传笔记', |
|
|
|
|
|
deadline: '2025-03-28', |
|
|
|
|
|
rejectReason: this.isRejected ? '图片不清晰,请重新上传高清图片' : '' |
|
|
|
|
|
} |
|
|
|
|
|
this.taskInfo = mockData |
|
|
|
|
|
|
|
|
}, |
|
|
|
|
|
uploadFilePromise(url) { |
|
|
|
|
|
return new Promise((resolve, reject) => { |
|
|
|
|
|
let uploadTask = uni.uploadFile({ |
|
|
|
|
|
url: 'https://store-test.catmdogd.com/test-api/h5/oss/upload', |
|
|
|
|
|
filePath: url, |
|
|
|
|
|
name: 'file', |
|
|
|
|
|
formData: { |
|
|
|
|
|
user: 'test' |
|
|
|
|
|
}, |
|
|
|
|
|
success: (res) => { |
|
|
|
|
|
if(res && res.data) { |
|
|
|
|
|
try { |
|
|
|
|
|
let resData = JSON.parse(res.data); |
|
|
|
|
|
if(resData.url) { |
|
|
|
|
|
resolve(resData.url); |
|
|
|
|
|
} else { |
|
|
|
|
|
reject("上传失败: 未获取到图片URL"); |
|
|
|
|
|
} |
|
|
|
|
|
} catch(e) { |
|
|
|
|
|
reject("上传失败: 解析响应数据错误"); |
|
|
|
|
|
} |
|
|
|
|
|
} else { |
|
|
|
|
|
reject("上传失败: 响应数据为空"); |
|
|
|
|
|
} |
|
|
|
|
|
}, |
|
|
|
|
|
fail: (err) => { |
|
|
|
|
|
reject("上传失败: " + (err.errMsg || JSON.stringify(err))); |
|
|
|
|
|
} |
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
// 监听上传进度 |
|
|
|
|
|
uploadTask.onProgressUpdate((res) => { |
|
|
|
|
|
// 查找当前正在上传的文件 |
|
|
|
|
|
const index = this.fileList.findIndex(file => file.status === 'uploading'); |
|
|
|
|
|
if(index !== -1) { |
|
|
|
|
|
// 更新上传进度信息 |
|
|
|
|
|
this.fileList[index].message = '上传中 ' + res.progress + '%'; |
|
|
|
|
|
} |
|
|
|
|
|
}); |
|
|
|
|
|
}) |
|
|
|
|
|
}, |
|
|
|
|
|
formatDate(dateStr) { |
|
|
|
|
|
if (!dateStr) return ''; |
|
|
|
|
|
let date = new Date(dateStr); |
|
|
|
|
|
let year = date.getFullYear(); |
|
|
|
|
|
let month = (date.getMonth() + 1).toString().padStart(2, '0'); |
|
|
|
|
|
let day = date.getDate().toString().padStart(2, '0'); |
|
|
|
|
|
return `${year}-${month}-${day}`; |
|
|
}, |
|
|
}, |
|
|
afterRead(event) { |
|
|
afterRead(event) { |
|
|
// 读取文件后的处理 |
|
|
// 读取文件后的处理 |
|
|
const { file } = event |
|
|
const { file } = event |
|
|
this.fileList.push({ |
|
|
|
|
|
url: file.url, |
|
|
|
|
|
status: 'success', |
|
|
|
|
|
message: '上传成功', |
|
|
|
|
|
name: file.name |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 处理文件数组 |
|
|
|
|
|
const fileList = Array.isArray(file) ? file : [file] |
|
|
|
|
|
|
|
|
|
|
|
// 遍历处理每个文件 |
|
|
|
|
|
fileList.forEach(item => { |
|
|
|
|
|
// 更新UI显示上传中状态 |
|
|
|
|
|
const fileListItem = { |
|
|
|
|
|
...item, |
|
|
|
|
|
status: 'uploading', |
|
|
|
|
|
message: '上传中' |
|
|
|
|
|
} |
|
|
|
|
|
this.fileList.push(fileListItem) |
|
|
|
|
|
const currentIndex = this.fileList.length - 1 |
|
|
|
|
|
|
|
|
|
|
|
// 使用Promise上传图片 |
|
|
|
|
|
this.uploadFilePromise(item.url) |
|
|
|
|
|
.then(url => { |
|
|
|
|
|
// 上传成功,更新状态和URL |
|
|
|
|
|
this.fileList[currentIndex].status = 'success' |
|
|
|
|
|
this.fileList[currentIndex].message = '上传成功' |
|
|
|
|
|
this.fileList[currentIndex].url = url |
|
|
|
|
|
// 保存上传后的URL |
|
|
|
|
|
this.formData.examineImage.push(url) |
|
|
|
|
|
}) |
|
|
|
|
|
.catch(err => { |
|
|
|
|
|
// 上传失败 |
|
|
|
|
|
this.fileList[currentIndex].status = 'failed' |
|
|
|
|
|
this.fileList[currentIndex].message = '上传失败' |
|
|
|
|
|
|
|
|
|
|
|
uni.showToast({ |
|
|
|
|
|
title: '图片上传失败', |
|
|
|
|
|
icon: 'none' |
|
|
|
|
|
}) |
|
|
|
|
|
}) |
|
|
}) |
|
|
}) |
|
|
this.formData.images.push(file.url) |
|
|
|
|
|
}, |
|
|
}, |
|
|
deletePic(event) { |
|
|
deletePic(event) { |
|
|
// 删除图片 |
|
|
// 删除图片 |
|
|
const index = event.index |
|
|
const index = event.index |
|
|
this.fileList.splice(index, 1) |
|
|
this.fileList.splice(index, 1) |
|
|
this.formData.images.splice(index, 1) |
|
|
|
|
|
|
|
|
this.formData.examineImage.splice(index, 1) |
|
|
}, |
|
|
}, |
|
|
submitTaskHandler() { |
|
|
submitTaskHandler() { |
|
|
// 提交任务 |
|
|
|
|
|
if (this.formData.images.length === 0) { |
|
|
|
|
|
|
|
|
// 表单验证 |
|
|
|
|
|
if (!this.formData.examineText) { |
|
|
|
|
|
uni.showToast({ |
|
|
|
|
|
title: '请输入笔记链接', |
|
|
|
|
|
icon: 'none' |
|
|
|
|
|
}) |
|
|
|
|
|
return |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (this.formData.examineImage.length === 0) { |
|
|
uni.showToast({ |
|
|
uni.showToast({ |
|
|
title: '请上传任务完成凭证', |
|
|
|
|
|
|
|
|
title: '请上传至少一张截图', |
|
|
icon: 'none' |
|
|
icon: 'none' |
|
|
}) |
|
|
}) |
|
|
return |
|
|
return |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// 实际项目中取消注释下面的代码 |
|
|
|
|
|
/* |
|
|
|
|
|
|
|
|
// 检查是否有正在上传的图片 |
|
|
|
|
|
const isUploading = this.fileList.some(file => file.status === 'uploading') |
|
|
|
|
|
if (isUploading) { |
|
|
|
|
|
uni.showToast({ |
|
|
|
|
|
title: '图片正在上传中,请稍候', |
|
|
|
|
|
icon: 'none' |
|
|
|
|
|
}) |
|
|
|
|
|
return |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 显示提交中提示 |
|
|
|
|
|
uni.showLoading({ |
|
|
|
|
|
title: '提交中...' |
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
// 提交任务 |
|
|
submitTask({ |
|
|
submitTask({ |
|
|
taskId: this.taskId, |
|
|
|
|
|
noteLink: this.formData.noteLink, |
|
|
|
|
|
images: this.formData.images |
|
|
|
|
|
|
|
|
id: this.taskId, |
|
|
|
|
|
taskId: this.formData.taskId, |
|
|
|
|
|
examineText: this.formData.examineText, |
|
|
|
|
|
examineImage: this.formData.examineImage.join(',') |
|
|
}).then(res => { |
|
|
}).then(res => { |
|
|
|
|
|
uni.hideLoading() |
|
|
if (res && res.code === 200) { |
|
|
if (res && res.code === 200) { |
|
|
uni.showToast({ |
|
|
uni.showToast({ |
|
|
title: '任务提交成功', |
|
|
|
|
|
|
|
|
title: '提交成功', |
|
|
icon: 'success' |
|
|
icon: 'success' |
|
|
}) |
|
|
}) |
|
|
|
|
|
// 返回任务详情页 |
|
|
setTimeout(() => { |
|
|
setTimeout(() => { |
|
|
uni.navigateBack() |
|
|
uni.navigateBack() |
|
|
}, 1500) |
|
|
}, 1500) |
|
|
|
|
|
} else { |
|
|
|
|
|
uni.showToast({ |
|
|
|
|
|
title: res.msg || '提交失败', |
|
|
|
|
|
icon: 'none' |
|
|
|
|
|
}) |
|
|
} |
|
|
} |
|
|
}) |
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
// 模拟提交 |
|
|
|
|
|
uni.showLoading({ |
|
|
|
|
|
title: '提交中...' |
|
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
setTimeout(() => { |
|
|
|
|
|
|
|
|
}).catch(err => { |
|
|
uni.hideLoading() |
|
|
uni.hideLoading() |
|
|
uni.showToast({ |
|
|
uni.showToast({ |
|
|
title: '任务提交成功', |
|
|
|
|
|
icon: 'success' |
|
|
|
|
|
|
|
|
title: '提交失败', |
|
|
|
|
|
icon: 'none' |
|
|
}) |
|
|
}) |
|
|
setTimeout(() => { |
|
|
|
|
|
uni.navigateBack() |
|
|
|
|
|
}, 1500) |
|
|
|
|
|
}, 1500) |
|
|
|
|
|
|
|
|
console.error('提交任务失败:', err) |
|
|
|
|
|
}) |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
@ -177,91 +286,78 @@ |
|
|
.task-upload { |
|
|
.task-upload { |
|
|
background-color: #f5f5f7; |
|
|
background-color: #f5f5f7; |
|
|
min-height: 100vh; |
|
|
min-height: 100vh; |
|
|
padding-bottom: 120rpx; |
|
|
|
|
|
|
|
|
|
|
|
.reject-tip { |
|
|
|
|
|
background-color: #FFF1F0; |
|
|
|
|
|
padding: 20rpx 30rpx; |
|
|
|
|
|
|
|
|
|
|
|
text { |
|
|
|
|
|
color: #FF5722; |
|
|
|
|
|
font-size: 28rpx; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.task-header { |
|
|
.task-header { |
|
|
background-color: #FFFFFF; |
|
|
background-color: #FFFFFF; |
|
|
padding: 30rpx; |
|
|
padding: 30rpx; |
|
|
|
|
|
|
|
|
.task-title { |
|
|
.task-title { |
|
|
font-size: 32rpx; |
|
|
|
|
|
|
|
|
font-size: 36rpx; |
|
|
font-weight: bold; |
|
|
font-weight: bold; |
|
|
color: #333; |
|
|
color: #333; |
|
|
margin-bottom: 20rpx; |
|
|
margin-bottom: 20rpx; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
.task-deadline { |
|
|
.task-deadline { |
|
|
font-size: 26rpx; |
|
|
|
|
|
|
|
|
font-size: 24rpx; |
|
|
color: #999; |
|
|
color: #999; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
.upload-form { |
|
|
|
|
|
background-color: #FFFFFF; |
|
|
|
|
|
|
|
|
.reject-box { |
|
|
|
|
|
background-color: #FFF1F0; |
|
|
margin-top: 20rpx; |
|
|
margin-top: 20rpx; |
|
|
padding: 30rpx; |
|
|
padding: 30rpx; |
|
|
|
|
|
|
|
|
.form-title { |
|
|
|
|
|
font-size: 30rpx; |
|
|
|
|
|
|
|
|
.reject-title { |
|
|
|
|
|
font-size: 28rpx; |
|
|
font-weight: bold; |
|
|
font-weight: bold; |
|
|
color: #333; |
|
|
|
|
|
margin-bottom: 30rpx; |
|
|
|
|
|
border-left: 8rpx solid #ffaa48; |
|
|
|
|
|
padding-left: 20rpx; |
|
|
|
|
|
|
|
|
color: #F5222D; |
|
|
|
|
|
margin-bottom: 10rpx; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.reject-reason { |
|
|
|
|
|
font-size: 26rpx; |
|
|
|
|
|
color: #F5222D; |
|
|
} |
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.upload-form { |
|
|
|
|
|
background-color: #FFFFFF; |
|
|
|
|
|
margin-top: 20rpx; |
|
|
|
|
|
padding: 30rpx; |
|
|
|
|
|
|
|
|
.form-item { |
|
|
.form-item { |
|
|
margin-bottom: 30rpx; |
|
|
|
|
|
|
|
|
margin-bottom: 40rpx; |
|
|
|
|
|
|
|
|
.item-label { |
|
|
|
|
|
font-size: 28rpx; |
|
|
|
|
|
|
|
|
.form-label { |
|
|
|
|
|
font-size: 30rpx; |
|
|
|
|
|
font-weight: bold; |
|
|
color: #333; |
|
|
color: #333; |
|
|
margin-bottom: 20rpx; |
|
|
margin-bottom: 20rpx; |
|
|
|
|
|
|
|
|
.required { |
|
|
|
|
|
color: #f56c6c; |
|
|
|
|
|
margin-left: 4rpx; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
.item-content { |
|
|
|
|
|
position: relative; |
|
|
|
|
|
|
|
|
|
|
|
.word-count { |
|
|
|
|
|
position: absolute; |
|
|
|
|
|
bottom: 10rpx; |
|
|
|
|
|
right: 10rpx; |
|
|
|
|
|
font-size: 24rpx; |
|
|
|
|
|
color: #999; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.upload-tips { |
|
|
|
|
|
font-size: 24rpx; |
|
|
|
|
|
color: #999; |
|
|
|
|
|
margin-top: 20rpx; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
.form-notice { |
|
|
|
|
|
font-size: 24rpx; |
|
|
|
|
|
color: #999; |
|
|
|
|
|
margin-bottom: 20rpx; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.form-input { |
|
|
|
|
|
background-color: #F8F8F8; |
|
|
|
|
|
border-radius: 8rpx; |
|
|
|
|
|
padding: 10rpx; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.upload-box { |
|
|
|
|
|
margin-top: 20rpx; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.submit-btn { |
|
|
|
|
|
position: fixed; |
|
|
|
|
|
bottom: 0; |
|
|
|
|
|
left: 0; |
|
|
|
|
|
right: 0; |
|
|
|
|
|
background-color: #FFFFFF; |
|
|
|
|
|
padding: 20rpx 30rpx; |
|
|
|
|
|
box-shadow: 0 -2rpx 10rpx rgba(0, 0, 0, 0.05); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
.submit-btn { |
|
|
|
|
|
margin-top: 60rpx; |
|
|
|
|
|
padding: 0 40rpx; |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
</style> |
|
|
</style> |