|
@@ -5,32 +5,32 @@ import {
|
|
|
Button,
|
|
|
Cell,
|
|
|
CellGroup,
|
|
|
- closeToast,
|
|
|
DatePicker,
|
|
|
Field,
|
|
|
Picker,
|
|
|
Popup,
|
|
|
Radio,
|
|
|
RadioGroup,
|
|
|
- showLoadingToast,
|
|
|
- showToast,
|
|
|
- Tag,
|
|
|
- Uploader
|
|
|
+ showSuccessToast,
|
|
|
+ showToast
|
|
|
} from 'vant'
|
|
|
-import { getOssUploadUrl } from '@/state'
|
|
|
-import umiRequest from 'umi-request'
|
|
|
import { defineComponent, onMounted, reactive } from 'vue'
|
|
|
import styles from './index.module.less'
|
|
|
import iconUpload from '../images/icon-upload.png'
|
|
|
import iconUploadVideo from '../images/icon-upload-video.png'
|
|
|
import iconUploadVideoCover from '../images/icon-upload-video-cover.png'
|
|
|
import OUploadAll from '@/components/o-upload-all'
|
|
|
+import OHeader from '@/components/o-header'
|
|
|
+import ODialog from '@/components/o-dialog'
|
|
|
+import { useRoute, useRouter } from 'vue-router'
|
|
|
|
|
|
export default defineComponent({
|
|
|
name: 'story-operation',
|
|
|
setup() {
|
|
|
+ const router = useRouter()
|
|
|
+ const route = useRoute()
|
|
|
const forms = reactive({
|
|
|
- bucket: 'daya',
|
|
|
+ id: route.query.id || null,
|
|
|
content: '',
|
|
|
orchestraStatus: false,
|
|
|
orchestraList: [] as any,
|
|
@@ -40,9 +40,9 @@ export default defineComponent({
|
|
|
currentDate: [dayjs().format('YYYY'), dayjs().format('MM'), dayjs().format('DD')],
|
|
|
storyType: 'IMAGE',
|
|
|
attachments: [] as any, //群发消息附件
|
|
|
-
|
|
|
video: [] as any,
|
|
|
- videoCover: [] as any
|
|
|
+ videoCover: [] as any,
|
|
|
+ delStatus: false
|
|
|
})
|
|
|
|
|
|
// 获取乐团列表
|
|
@@ -73,11 +73,176 @@ export default defineComponent({
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- onMounted(() => {
|
|
|
- getOrchestras()
|
|
|
+ const getDetails = async () => {
|
|
|
+ try {
|
|
|
+ if (!forms.id) {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ const { data } = await request.get('/api-school/orchestraStory/detail/' + forms.id)
|
|
|
+ console.log(data)
|
|
|
+ forms.content = data.content
|
|
|
+ forms.createTime = data.createTime
|
|
|
+ forms.storyType = data.type
|
|
|
+
|
|
|
+ forms.orchestraList.forEach((item: any) => {
|
|
|
+ if (item.value === item.orchestraId) {
|
|
|
+ forms.selectOrchestra = item
|
|
|
+ }
|
|
|
+ })
|
|
|
+
|
|
|
+ if (data.type === 'IMAGE') {
|
|
|
+ data.attachments &&
|
|
|
+ data.attachments.forEach((item: any) => {
|
|
|
+ forms.attachments.push(item.url)
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ const temp = data.attachments ? data.attachments[0] : []
|
|
|
+ forms.video.push(temp.url)
|
|
|
+ forms.videoCover.push(temp.coverImage)
|
|
|
+ }
|
|
|
+ } catch {
|
|
|
+ //
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ const onSumbit = async () => {
|
|
|
+ try {
|
|
|
+ if (!forms.selectOrchestra.value) {
|
|
|
+ showToast('请选择乐团')
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if (!forms.createTime) {
|
|
|
+ showToast('请选择事迹日期')
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if (!forms.content) {
|
|
|
+ showToast('请输入事迹内容')
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ if (forms.storyType === 'IMAGE' && forms.attachments.length <= 0) {
|
|
|
+ showToast('请上传照片')
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if (forms.storyType === 'VIDEO') {
|
|
|
+ if (forms.video.length <= 0) {
|
|
|
+ showToast('请上传视频')
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if (forms.videoCover.length <= 0) {
|
|
|
+ showToast('请上传视频封面')
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ const attachments: any = []
|
|
|
+ if (forms.storyType === 'IMAGE') {
|
|
|
+ forms.attachments.forEach((item: any) => {
|
|
|
+ const temp = {
|
|
|
+ attachmentType: forms.storyType,
|
|
|
+ url: item
|
|
|
+ }
|
|
|
+
|
|
|
+ attachments.push(temp)
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ attachments.push({
|
|
|
+ attachmentType: forms.storyType,
|
|
|
+ url: forms.video[0],
|
|
|
+ coverImage: forms.videoCover[0]
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ console.log({
|
|
|
+ createTime: dayjs(forms.createTime).format('YYYY-MM-DD HH:mm:ss'),
|
|
|
+ orchestraId: forms.selectOrchestra.value,
|
|
|
+ content: forms.content,
|
|
|
+ type: forms.storyType,
|
|
|
+ attachments
|
|
|
+ })
|
|
|
+ const params = {
|
|
|
+ createTime: dayjs(forms.createTime).format('YYYY-MM-DD HH:mm:ss'),
|
|
|
+ orchestraId: forms.selectOrchestra.value,
|
|
|
+ content: forms.content,
|
|
|
+ type: forms.storyType,
|
|
|
+ attachments
|
|
|
+ }
|
|
|
+
|
|
|
+ if (forms.id) {
|
|
|
+ await request.post('/api-school/orchestraStory/update', {
|
|
|
+ data: {
|
|
|
+ ...params,
|
|
|
+ id: forms.id
|
|
|
+ }
|
|
|
+ })
|
|
|
+
|
|
|
+ setTimeout(() => {
|
|
|
+ showSuccessToast('修改成功')
|
|
|
+ }, 100)
|
|
|
+ } else {
|
|
|
+ await request.post('/api-school/orchestraStory/save', {
|
|
|
+ data: params
|
|
|
+ })
|
|
|
+
|
|
|
+ setTimeout(() => {
|
|
|
+ showSuccessToast('添加成功')
|
|
|
+ }, 100)
|
|
|
+ }
|
|
|
+
|
|
|
+ setTimeout(() => {
|
|
|
+ router.back()
|
|
|
+ }, 1100)
|
|
|
+ } catch {
|
|
|
+ //
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //
|
|
|
+ const onConfirm = async () => {
|
|
|
+ try {
|
|
|
+ await request.post('/api-school/orchestraStory/remove', {
|
|
|
+ requestType: 'form',
|
|
|
+ data: {
|
|
|
+ id: forms.id
|
|
|
+ }
|
|
|
+ })
|
|
|
+
|
|
|
+ setTimeout(() => {
|
|
|
+ showSuccessToast('删除成功')
|
|
|
+ }, 100)
|
|
|
+ setTimeout(() => {
|
|
|
+ router.back()
|
|
|
+ }, 1100)
|
|
|
+ } catch {
|
|
|
+ //
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ onMounted(async () => {
|
|
|
+ if (forms.id) {
|
|
|
+ document.title = '修改事迹'
|
|
|
+ }
|
|
|
+ await getOrchestras()
|
|
|
+ await getDetails()
|
|
|
})
|
|
|
return () => (
|
|
|
<div class={styles.storyOperation}>
|
|
|
+ <OHeader title={forms.id ? '修改事迹' : '添加事迹'}>
|
|
|
+ {{
|
|
|
+ right: () =>
|
|
|
+ forms.id && (
|
|
|
+ <span
|
|
|
+ style={{ color: '#777777' }}
|
|
|
+ onClick={() => {
|
|
|
+ forms.delStatus = true
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ 删除
|
|
|
+ </span>
|
|
|
+ )
|
|
|
+ }}
|
|
|
+ </OHeader>
|
|
|
+
|
|
|
<CellGroup inset class={styles.cellGroup}>
|
|
|
<Field
|
|
|
inputAlign="right"
|
|
@@ -92,9 +257,9 @@ export default defineComponent({
|
|
|
/>
|
|
|
<Field
|
|
|
inputAlign="right"
|
|
|
- label="发送时间"
|
|
|
+ label="事迹日期"
|
|
|
modelValue={forms.createTime ? dayjs(forms.createTime).format('YYYY-MM-DD') : ''}
|
|
|
- placeholder="请选择发送时间"
|
|
|
+ placeholder="请选择事迹日期"
|
|
|
onClick={() => {
|
|
|
forms.createTimeStatus = true
|
|
|
}}
|
|
@@ -109,7 +274,7 @@ export default defineComponent({
|
|
|
{{
|
|
|
title: () => (
|
|
|
<div class={styles.title}>
|
|
|
- <div class={styles.name}>退团原因</div>
|
|
|
+ <div class={styles.name}>事迹内容</div>
|
|
|
<div class={styles.nums}>{forms.content.length || 0}/200</div>
|
|
|
</div>
|
|
|
),
|
|
@@ -153,7 +318,7 @@ export default defineComponent({
|
|
|
<OUploadAll
|
|
|
style={{ marginBottom: '12px' }}
|
|
|
v-model:modelValue={forms.attachments}
|
|
|
- // maxCount={9}
|
|
|
+ maxCount={9}
|
|
|
uploadIcon={iconUpload}
|
|
|
/>
|
|
|
)
|
|
@@ -167,13 +332,15 @@ export default defineComponent({
|
|
|
<>
|
|
|
<OUploadAll
|
|
|
style={{ marginBottom: '12px' }}
|
|
|
- v-model:modelValue={forms.videoCover}
|
|
|
+ v-model:modelValue={forms.video}
|
|
|
accept="video/*"
|
|
|
+ uploadType="VIDEO"
|
|
|
uploadIcon={iconUploadVideo}
|
|
|
deletable={false}
|
|
|
/>
|
|
|
|
|
|
<OUploadAll
|
|
|
+ deletable={false}
|
|
|
style={{ marginBottom: '12px' }}
|
|
|
v-model:modelValue={forms.videoCover}
|
|
|
uploadIcon={iconUploadVideoCover}
|
|
@@ -187,7 +354,7 @@ export default defineComponent({
|
|
|
|
|
|
<OSticky position="bottom">
|
|
|
<div class={'btnGroup'}>
|
|
|
- <Button round block type="primary">
|
|
|
+ <Button round block type="primary" onClick={onSumbit}>
|
|
|
保存
|
|
|
</Button>
|
|
|
</div>
|
|
@@ -215,6 +382,15 @@ export default defineComponent({
|
|
|
}}
|
|
|
/>
|
|
|
</Popup>
|
|
|
+
|
|
|
+ <ODialog
|
|
|
+ v-model:show={forms.delStatus}
|
|
|
+ title="删除事迹"
|
|
|
+ messageAlign="left"
|
|
|
+ message="删除后学生将无法再看到本条事迹确认要删除吗?"
|
|
|
+ showCancelButton
|
|
|
+ onConfirm={onConfirm}
|
|
|
+ ></ODialog>
|
|
|
</div>
|
|
|
)
|
|
|
}
|