|
@@ -7,6 +7,7 @@ import { useValidator } from '@/hooks/web/useValidator'
|
|
|
import { IDomEditor } from '@wangeditor/editor'
|
|
|
import { useStorage } from '@/hooks/web/useStorage'
|
|
|
import { Icon } from '@/components/Icon'
|
|
|
+import { uploadFile } from '@/api/common'
|
|
|
const { required } = useValidator()
|
|
|
const { getStorage } = useStorage()
|
|
|
const props = defineProps({
|
|
@@ -48,6 +49,21 @@ const schema = reactive<FormSchema[]>([
|
|
|
placeholder: '请输入'
|
|
|
}
|
|
|
},
|
|
|
+ {
|
|
|
+ field: 'date',
|
|
|
+ label: '日期范围',
|
|
|
+ component: 'DatePicker',
|
|
|
+ formItemProps: {
|
|
|
+ rules: [required()]
|
|
|
+ },
|
|
|
+ colProps: {
|
|
|
+ span: 24
|
|
|
+ },
|
|
|
+ componentProps: {
|
|
|
+ type: 'daterange',
|
|
|
+ placeholder: '请输入'
|
|
|
+ }
|
|
|
+ },
|
|
|
{
|
|
|
field: 'categoryId',
|
|
|
label: '文章类目',
|
|
@@ -105,7 +121,17 @@ const schema = reactive<FormSchema[]>([
|
|
|
component: 'Upload',
|
|
|
label: '文章展图',
|
|
|
componentProps: {
|
|
|
- action: '/api/sysApk/uploadFile',
|
|
|
+ httpRequest: (data: any) => {
|
|
|
+ let file = data.file
|
|
|
+ let formData = new FormData()
|
|
|
+ formData.append('file', file)
|
|
|
+ uploadFile(formData).then((response) => {
|
|
|
+ setValues({
|
|
|
+ articlePic: response.data.virtualPath
|
|
|
+ })
|
|
|
+ articlePic.value = response.data.virtualPath
|
|
|
+ })
|
|
|
+ },
|
|
|
showFileList: false,
|
|
|
class: 'NewsUploader',
|
|
|
headers: {
|
|
@@ -153,22 +179,38 @@ const schema = reactive<FormSchema[]>([
|
|
|
editorConfig: {
|
|
|
MENU_CONF: {
|
|
|
uploadImage: {
|
|
|
- server: '/api/sysApk/uploadFile',
|
|
|
fieldName: 'file',
|
|
|
headers: {
|
|
|
token: getStorage('token')
|
|
|
},
|
|
|
+ async customUpload(file: File, insertFn: InsertFnType) {
|
|
|
+ // 定义表单数据
|
|
|
+ let formData = new FormData()
|
|
|
+ formData.append('file', file)
|
|
|
+ // 上传文件
|
|
|
+ uploadFile(formData).then((res) => {
|
|
|
+ // 调用 insertFn 方法插入图片
|
|
|
+ insertFn(res.data.virtualPath, res.data.fileName, '')
|
|
|
+ })
|
|
|
+ },
|
|
|
customInsert(res: any, insertFn: InsertFnType) {
|
|
|
// 从 res 中找到 url alt href ,然后插入图片
|
|
|
insertFn(res.data.virtualPath, res.fileName, '')
|
|
|
}
|
|
|
},
|
|
|
uploadVideo: {
|
|
|
- server: '/api/sysApk/uploadFile',
|
|
|
fieldName: 'file',
|
|
|
headers: {
|
|
|
token: getStorage('token')
|
|
|
},
|
|
|
+ async customUpload(file: File, insertFn: InsertFnType) {
|
|
|
+ let formData = new FormData()
|
|
|
+ formData.append('file', file)
|
|
|
+ uploadFile(formData).then((res) => {
|
|
|
+ // 将视频上传成功后的路径和文件名插入到指定位置
|
|
|
+ insertFn(res.data.virtualPath, res.data.fileName, '')
|
|
|
+ })
|
|
|
+ },
|
|
|
customInsert(res: any, insertFn: InsertFnType) {
|
|
|
// 从 res 中找到 url alt href ,然后插入视频
|
|
|
insertFn(res.data.virtualPath, res.fileName, '')
|
|
@@ -188,13 +230,19 @@ const schema = reactive<FormSchema[]>([
|
|
|
|
|
|
const rules = reactive({})
|
|
|
|
|
|
+// 定义一个submit函数,用于提交表单
|
|
|
const submit = async () => {
|
|
|
+ // 获取表单元素
|
|
|
const elForm = await getElFormExpose()
|
|
|
+ // 调用表单元素的validate方法,获取表单验证结果
|
|
|
const valid = await elForm?.validate().catch((err) => {
|
|
|
+ // 如果表单验证失败,输出错误信息
|
|
|
console.log(err)
|
|
|
})
|
|
|
+ // 如果表单验证成功,获取表单数据
|
|
|
if (valid) {
|
|
|
const formData = await getFormData()
|
|
|
+ // 返回表单数据
|
|
|
return formData
|
|
|
}
|
|
|
}
|
|
@@ -202,8 +250,11 @@ const submit = async () => {
|
|
|
watch(
|
|
|
() => props.currentRow,
|
|
|
(currentRow) => {
|
|
|
+ // 如果当前行为空,则返回
|
|
|
if (!currentRow) return
|
|
|
+ // 设置值
|
|
|
setValues(currentRow)
|
|
|
+ // 设置模式
|
|
|
setSchema([
|
|
|
{
|
|
|
field: 'articleContent',
|
|
@@ -211,6 +262,7 @@ watch(
|
|
|
value: currentRow.articleContent
|
|
|
}
|
|
|
])
|
|
|
+ // 设置图片
|
|
|
articlePic.value = currentRow.articlePic
|
|
|
},
|
|
|
{
|
|
@@ -218,7 +270,6 @@ watch(
|
|
|
immediate: true
|
|
|
}
|
|
|
)
|
|
|
-
|
|
|
defineExpose({
|
|
|
submit
|
|
|
})
|
|
@@ -237,6 +288,7 @@ defineExpose({
|
|
|
</style>
|
|
|
|
|
|
<style lang="less">
|
|
|
+/**添加图片上传组件样式 */
|
|
|
.NewsUploader .el-upload {
|
|
|
border: 1px dashed var(--el-border-color);
|
|
|
border-radius: 6px;
|