272 lines
8.0 KiB
Vue
272 lines
8.0 KiB
Vue
|
|
<!-- @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>
|