Files
SaaS-lib/nervui-mobile-application/src/view/contentManage/article/add.vue
xuziqiang d0155dbe3c push
2024-05-15 17:29:42 +08:00

272 lines
8.0 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.

<!-- @format -->
<template>
<ns-view-add-form
ref="nsAddFormRef"
:schemas="formSchema"
:model="data"
:title="uuid ? '编辑文章' : '新增文章'"
:dataHandle="dataHandle"
:headActions="headActions"
:api="formApi" />
</template>
<script lang="ts">
import { defineComponent, reactive, ref, provide, computed } from 'vue';
import { useRouter } from 'vue-router';
import FCKEditor from '/@/view/components/FCKEditor.vue';
import { http } from '/nerv-lib/util/http';
export default defineComponent({
name: 'NewsAdd',
setup() {
provide('components', () => {
return { FCKEditor };
});
const router = useRouter();
const { uuid } = router.currentRoute.value.query;
const nsAddFormRef = ref();
const htmlInfo = ref('');
const imageNetUrl = ref('');
let uuidList = ref<any>([]);
const formApi = ref(
uuid
? '/api/content/objs/admin/cms/bg/article/update'
: '/api/content/objs/admin/cms/bg/article/add',
);
const data = ref({
articleCommonHandleForm: { folderCode: 'mobileArticleManager', content: '', title: '' },
});
if (uuid) {
http.get('/api/content/objs/admin/cms/bg/article/detail', { uuid }).then((res) => {
console.log(res);
data.value = res.data.articleCommonVO;
data.value.tagUuidList = res.data.tagNameList;
uuidList.value = res.data.tagUuidList;
data.value.articleCommonHandleForm = {
folderCode: 'mobileArticleManager',
folderName: '文章',
sort: 0,
title: res.data.articleCommonVO.title,
content: res.data.articleCommonVO.content,
articleSource: res.data.articleCommonVO.articleSource,
imageNetUrl: res.data.articleCommonVO.imageNetUrl,
};
data.value.folderCode = 'mobileArticleManager';
// 编辑->未上架
data.value.isPublish = 0;
imageNetUrl.value = res.data.articleCommonVO.imageNetUrl;
htmlInfo.value = res.data.articleCommonVO.content || '';
});
}
const getTagUuid = async (list = []) => {
const res = await http.get('/api/content/objs/admin/cms/bg/articleTag/allList', {
folderCode: 'mobileArticleManager',
});
console.log(res);
const arr = [];
list?.map((cur) => {
res.data.some((item) => {
if (item.tagName == cur) {
arr.push(item.uuid);
return true;
}
});
});
uuidList.value = arr;
};
const addTag = (tagName, tagNameList) => {
http
.post('/api/content/objs/admin/cms/bg/articleTag/add', {
folderCode: 'mobileArticleManager',
tagName,
})
.then(() => {
getTagUuid(tagNameList);
});
};
const dataHandle = (data) => {
const newData = JSON.parse(JSON.stringify(data));
newData['articleCommonHandleForm'] = Object.assign(
newData['articleCommonHandleForm'],
data,
);
newData['tagUuidList'] = uuidList.value;
return newData;
};
const validateResult = computed(() => {
return !nsAddFormRef.value?.validateResult;
});
const headActions = ref({
actions: [
{
label: '发布',
name: 'NewsDetail',
dynamicDisabled: validateResult,
handle: (record, name) => {
// formApi.value = uuid
// ? '/api/content/objs/admin/cms/bg/article/publish'
// : '/api/content/objs/admin/cms/bg/article/add';
data.value.isPublish = 1;
nsAddFormRef.value?.submit();
},
},
],
});
const formSchema = ref([
{
field: 'folderCode',
defaultValue: 'mobileArticleManager',
},
{
field: 'articleCommonHandleForm',
defaultValue: { folderCode: 'mobileArticleManager', folderName: '文章', sort: 0 },
},
{
field: 'uuid',
defaultValue: uuid,
},
{
field: 'isPublish',
defaultValue: 0,
},
{
field: 'title',
label: '文章标题',
component: 'NsInput',
componentProps: {
placeholder: '请输入',
// 禁止输入
// disabled: true,
// onChange: (e) => {
// data.value.articleCommonHandleForm['title'] = e.target.value;
// },
},
rules: [
{
required: true,
message: '请输入文章标题',
},
],
},
{
field: 'articleSource',
label: '消息来源',
component: 'NsInput',
componentProps: {
placeholder: '请输入',
// onChange: (e) => {
// data.value.articleCommonHandleForm['articleSource'] = e.target.value;
// },
},
rules: [
{
required: true,
message: '请输入消息来源',
},
],
},
{
field: 'tagUuidList',
label: '文章标签',
component: 'nsSelectApi',
componentProps: {
mode: 'tags',
api: '/api/content/objs/admin/cms/bg/articleTag/allList',
params: { folderCode: 'mobileArticleManager' },
autoSelectFirst: false,
resultField: 'data',
labelField: 'tagName',
valueField: 'tagName',
immediate: true,
dropdownReload: true,
placeholder: '请选择',
filterOption: (input, option) => {
return option.tagName?.indexOf(input) >= 0;
},
// onChange: (a, b) => {
// console.log(a, b, 'onchange');
// // getTagUuid(a);
// },
onSelect: (a, b) => {
if (JSON.stringify(b) == '{}') {
addTag(a, data.value.tagUuidList);
// console.log(data.value);
} else {
getTagUuid(data.value.tagUuidList);
}
console.log(a, JSON.stringify(b), 'onselect');
},
},
// rules: [
// {
// required: true,
// message: '请选择',
// type: 'array',
// },
// ],
},
{
field: 'imageNetUrl',
component: 'NsUpload',
label: '文章图片',
componentProps: {
// 上传的地址
url: '/api/fileunify/objs/admin/MaterialFile',
// 上传的图片大小
maxSize: 5242880,
// 上传的图片类型
fileType: ['jpg', 'png', 'jpeg'],
// 展示图片数量
count: 1,
// 上传的文件类型0-证书1-图片2-身份证件
uploadType: 1,
params: {
groupCode: 'mobile_img',
},
baseImageUrl: imageNetUrl,
// onChange: (e) => {
// data.value.articleCommonHandleForm['imageNetUrl'] = e;
// },
},
},
{
field: 'content',
component: 'FCKEditor',
class: 'ns-form-item-full ns-form-item-padding ns-richText-ZIndex',
label: '文章内容',
componentProps: {
htmlInfo: htmlInfo,
// onChange: (a) => {
// data.value.articleCommonHandleForm['content'] = a;
// },
},
rules: [
{
required: true,
message: '内容不能为空',
trigger: 'blur',
},
],
},
]);
return {
formSchema,
data,
headActions,
nsAddFormRef,
dataHandle,
uuid,
formApi,
};
},
});
</script>