jiuyiUniapp/jiuyi2/components/index/collectAdd.vue

175 lines
3.4 KiB
Vue
Raw Normal View History

2024-12-18 15:46:27 +08:00
<script setup>
/**
* 新建收藏文件夹弹窗
*/
import {
ref,
getCurrentInstance,
reactive,
onMounted,
onBeforeUnmount,
} from 'vue'
// 工具库
import util from '@/common/js/util';
// 接口
import api from '@/api';
const {
proxy
} = getCurrentInstance()
2025-01-13 21:59:03 +08:00
// 收藏夹类
2024-12-18 15:46:27 +08:00
class Form {
2025-01-13 21:59:03 +08:00
// 收藏id
folderId = ''
2024-12-18 15:46:27 +08:00
// 收藏夹名称
2025-01-13 21:59:03 +08:00
folderName = ''
2024-12-18 15:46:27 +08:00
// 0公开1私密
2025-01-13 21:59:03 +08:00
isLock = 0
2024-12-18 15:46:27 +08:00
// 图片地址
2025-01-13 21:59:03 +08:00
photographUrl = ''
2024-12-18 15:46:27 +08:00
}
//
const form = reactive(new Form())
// 填充高度
const paddingHeight = ref(0)
onMounted(() => {
2025-01-13 21:59:03 +08:00
// #ifdef APP
2024-12-18 15:46:27 +08:00
uni.onKeyboardHeightChange((rs) => {
paddingHeight.value = rs.height
})
2025-01-13 21:59:03 +08:00
// #endif
2024-12-18 15:46:27 +08:00
})
onBeforeUnmount(() => {
2025-02-20 15:12:53 +08:00
// #ifdef APP
2024-12-18 15:46:27 +08:00
uni.offKeyboardHeightChange(rs => {
console.log('rs', rs)
})
2025-02-20 15:12:53 +08:00
// #endif
2024-12-18 15:46:27 +08:00
})
/**
* 打开弹窗
* @param {Object} value
*/
function open(value) {
// 如果是编辑
if (value) {
2025-01-13 21:59:03 +08:00
form.folderName = value.folderName
form.isLock = value.isLock
form.folderId = value.id
form.photographUrl = value.photographUrl
2024-12-18 15:46:27 +08:00
}
proxy.$refs.addCollectRef.open()
}
// 关闭弹窗
function close() {
proxy.$refs.addCollectRef.close()
}
// 上传图片
function upImage() {
util.upload_image({
type: 1,
success: rs => {
// 修改图片
2025-01-13 21:59:03 +08:00
form.photographUrl = rs.value
console.log('upload rs', rs, form)
2024-12-18 15:46:27 +08:00
}
})
}
// 切换是否公开收藏夹
function handlePrivate() {
2025-01-13 21:59:03 +08:00
form.isLock = form.isLock == 0 ? 1 : 0
2024-12-18 15:46:27 +08:00
}
2025-01-13 21:59:03 +08:00
// 提交表单
2024-12-18 15:46:27 +08:00
function handleSubmit() {
const data = {
...form,
}
// 验证
2025-01-13 21:59:03 +08:00
if (!form.photographUrl) {
util.alert('请上传封面图')
2024-12-18 15:46:27 +08:00
return
}
2025-01-13 21:59:03 +08:00
if (!form.folderName) {
util.alert('请输入收藏夹名称')
2024-12-18 15:46:27 +08:00
return
}
//
2025-01-13 21:59:03 +08:00
api.video.addfavorite({
data: data,
2024-12-18 15:46:27 +08:00
}).then(rs => {
if (rs.code == 200) {
// 收藏视频
uni.$emit('collectsVideo')
close()
Object.assign(form, new Form());
return
}
util.alert({
content: rs.msg,
showCancel: false,
})
})
}
defineExpose({
open,
close,
})
</script>
<template>
<uni-popup ref="addCollectRef" type="bottom">
<view class="addCollect popBot ptb20 plr20 bfff">
<view class="header fdr rows">
<view class="w120">
<uni-icons type="closeempty" @click="close" />
</view>
<view class="title">
<text class="c333 f28">编辑收藏夹</text>
</view>
<view class="w120 tar">
<text class="cFF9B27 f24" @click="handleSubmit">确认</text>
</view>
</view>
<!-- 收藏夹信息 -->
<view class="rows fdr mtb30">
<view class="pic fmid wh80 beee br10" @click="upImage">
2025-01-13 21:59:03 +08:00
<image class="wh80 br10" :src="form.photographUrl" mode="aspectFill" v-if="form.photographUrl" />
2024-12-18 15:46:27 +08:00
<uni-icons type="plusempty" size="40rpx" v-else />
</view>
<view class="edit f1 ml20">
2025-01-13 21:59:03 +08:00
<input type="text" :adjust-position="false" v-model="form.folderName" placeholder="输入收藏夹名称" />
2024-12-18 15:46:27 +08:00
</view>
</view>
<!-- 公开收藏夹 -->
<view class="rows fdr mtb30">
<view class="df fdr aic">
2025-01-13 21:59:03 +08:00
<text>是否快捷收藏夹</text>
2024-12-18 15:46:27 +08:00
<image src="/static/lock.png" mode="aspectFit" class="wh24 ml10" />
</view>
2025-01-13 21:59:03 +08:00
<switch class="switch" :checked="form.isLock == 1" color="#F85050" @change="handlePrivate" />
2024-12-18 15:46:27 +08:00
</view>
<view :style="{height: paddingHeight + 'px',}"></view>
</view>
</uni-popup>
</template>
<style lang="scss" scoped>
// 开关
.switch {
transform: scale(.7);
}
</style>