|
|
@ -41,6 +41,17 @@ |
|
|
|
@pressEnter="save" |
|
|
|
/> |
|
|
|
</a-form-item> |
|
|
|
<a-form-item label="模型" name="model"> |
|
|
|
<a-select v-model:value="form.model"> |
|
|
|
<a-select-option |
|
|
|
v-for="item in models" |
|
|
|
:key="item.value" |
|
|
|
:value="item.value" |
|
|
|
> |
|
|
|
{{ item.label }} |
|
|
|
</a-select-option> |
|
|
|
</a-select> |
|
|
|
</a-form-item> |
|
|
|
<a-form-item |
|
|
|
:label="`详情页ID`" |
|
|
|
name="itemId" |
|
|
@ -54,26 +65,15 @@ |
|
|
|
@pressEnter="save" |
|
|
|
/> |
|
|
|
</a-form-item> |
|
|
|
<!-- <a-form-item label="组件路径" name="component" v-if="isUpdate">--> |
|
|
|
<!-- <a-input--> |
|
|
|
<!-- allow-clear--> |
|
|
|
<!-- disabled--> |
|
|
|
<!-- placeholder="/pages/item/index.vue"--> |
|
|
|
<!-- v-model:value="form.component"--> |
|
|
|
<!-- @pressEnter="save"--> |
|
|
|
<!-- />--> |
|
|
|
<!-- </a-form-item>--> |
|
|
|
<a-form-item label="模型" name="model"> |
|
|
|
<a-select v-model:value="form.model"> |
|
|
|
<a-select-option |
|
|
|
v-for="item in models" |
|
|
|
:key="item.value" |
|
|
|
:value="item.value" |
|
|
|
> |
|
|
|
{{ item.label }} |
|
|
|
</a-select-option> |
|
|
|
</a-select> |
|
|
|
</a-form-item> |
|
|
|
<!-- <a-form-item label="组件路径" name="component" v-if="isUpdate">--> |
|
|
|
<!-- <a-input--> |
|
|
|
<!-- allow-clear--> |
|
|
|
<!-- disabled--> |
|
|
|
<!-- placeholder="/pages/item/index.vue"--> |
|
|
|
<!-- v-model:value="form.component"--> |
|
|
|
<!-- @pressEnter="save"--> |
|
|
|
<!-- />--> |
|
|
|
<!-- </a-form-item>--> |
|
|
|
<a-form-item |
|
|
|
:label="form.model == 'links' ? '链接地址' : '路由地址'" |
|
|
|
name="path" |
|
|
@ -106,14 +106,14 @@ |
|
|
|
<a-col |
|
|
|
v-bind="styleResponsive ? { md: 12, sm: 24, xs: 24 } : { span: 12 }" |
|
|
|
> |
|
|
|
<!-- <a-form-item label="模型" name="model">--> |
|
|
|
<!-- <SelectModel--> |
|
|
|
<!-- dict-code="NavigationModel"--> |
|
|
|
<!-- :placeholder="`选择模型`"--> |
|
|
|
<!-- v-model:value="form.model"--> |
|
|
|
<!-- @done="chooseModel"--> |
|
|
|
<!-- />--> |
|
|
|
<!-- </a-form-item>--> |
|
|
|
<!-- <a-form-item label="模型" name="model">--> |
|
|
|
<!-- <SelectModel--> |
|
|
|
<!-- dict-code="NavigationModel"--> |
|
|
|
<!-- :placeholder="`选择模型`"--> |
|
|
|
<!-- v-model:value="form.model"--> |
|
|
|
<!-- @done="chooseModel"--> |
|
|
|
<!-- />--> |
|
|
|
<!-- </a-form-item>--> |
|
|
|
<a-form-item label="位置" name="top" v-if="isUpdate"> |
|
|
|
<a-radio-group v-model:value="form.position" @change="onPosition"> |
|
|
|
<a-radio :value="1">顶部</a-radio> |
|
|
@ -178,7 +178,8 @@ |
|
|
|
v-model:value="password" |
|
|
|
/> |
|
|
|
</a-form-item> |
|
|
|
<a-form-item label="关联栏目" name="style" v-if="lang && lang != 'zh_CN'" extra="选择对应中文栏目,用于同步保存翻译内容"> |
|
|
|
<a-form-item label="关联栏目" name="style" v-if="lang && lang != 'zh_CN'" |
|
|
|
extra="选择对应中文栏目,用于同步保存翻译内容"> |
|
|
|
<a-tree-select |
|
|
|
allow-clear |
|
|
|
:tree-data="zhCmsNavigationList" |
|
|
@ -200,8 +201,8 @@ import {ref, reactive, watch} from 'vue'; |
|
|
|
import {message} from 'ant-design-vue/es'; |
|
|
|
import type {FormInstance, Rule} from 'ant-design-vue/es/form'; |
|
|
|
import {storeToRefs} from 'pinia'; |
|
|
|
import { useI18n } from 'vue-i18n'; |
|
|
|
import { toTreeData } from 'ele-admin-pro/es'; |
|
|
|
import {useI18n} from 'vue-i18n'; |
|
|
|
import {toTreeData} from 'ele-admin-pro/es'; |
|
|
|
import {useThemeStore} from '@/store/modules/theme'; |
|
|
|
import useFormData from '@/utils/use-form-data'; |
|
|
|
import {CmsNavigation} from '@/api/cms/cmsNavigation/model'; |
|
|
@ -218,7 +219,7 @@ import {listCmsModel} from "@/api/cms/cmsModel"; |
|
|
|
// 是否开启响应式布局 |
|
|
|
const themeStore = useThemeStore(); |
|
|
|
const {styleResponsive} = storeToRefs(themeStore); |
|
|
|
const { locale } = useI18n(); |
|
|
|
const {locale} = useI18n(); |
|
|
|
|
|
|
|
const emit = defineEmits<{ |
|
|
|
(e: 'done'): void; |
|
|
@ -315,14 +316,14 @@ const rules = reactive<Record<string, Rule[]>>({ |
|
|
|
trigger: 'blur' |
|
|
|
} |
|
|
|
], |
|
|
|
// model: [ |
|
|
|
// { |
|
|
|
// required: true, |
|
|
|
// message: '请选择模型', |
|
|
|
// type: 'string', |
|
|
|
// trigger: 'blur' |
|
|
|
// } |
|
|
|
// ], |
|
|
|
model: [ |
|
|
|
{ |
|
|
|
required: true, |
|
|
|
message: '请选择模型', |
|
|
|
type: 'string', |
|
|
|
trigger: 'blur' |
|
|
|
} |
|
|
|
], |
|
|
|
// component: [ |
|
|
|
// { |
|
|
|
// required: true, |
|
|
@ -399,10 +400,10 @@ const chooseModel = (item: CmsModel) => { |
|
|
|
form.component = `${item.component}`; |
|
|
|
form.itemId = undefined; |
|
|
|
|
|
|
|
if(item.model == 'links'){ |
|
|
|
if (item.model == 'links') { |
|
|
|
pathPlaceholder.value = 'https://'; |
|
|
|
} |
|
|
|
if(item.model == 'product'){ |
|
|
|
if (item.model == 'product') { |
|
|
|
pathPlaceholder.value = '/iphone-15-pro'; |
|
|
|
} |
|
|
|
}; |
|
|
@ -447,15 +448,15 @@ const save = () => { |
|
|
|
if (password.value) { |
|
|
|
form.password = password.value; |
|
|
|
} |
|
|
|
if(form.model == 'detail' && form.itemId == 0){ |
|
|
|
if (form.model == 'detail' && form.itemId == 0) { |
|
|
|
message.error('请输入文章ID'); |
|
|
|
return false; |
|
|
|
} |
|
|
|
if(form.model == 'item' && form.itemId == 0){ |
|
|
|
if (form.model == 'item' && form.itemId == 0) { |
|
|
|
message.error('请输入产品ID'); |
|
|
|
return false; |
|
|
|
} |
|
|
|
if(form.path == '/'){ |
|
|
|
if (form.path == '/') { |
|
|
|
form.model = 'index'; |
|
|
|
form.sortNumber = 0; |
|
|
|
} |
|
|
@ -501,13 +502,13 @@ const getModels = () => { |
|
|
|
} |
|
|
|
|
|
|
|
// 简体中文栏目 |
|
|
|
if(lang.value != 'zh_CN'){ |
|
|
|
if (lang.value != 'zh_CN') { |
|
|
|
listCmsNavigation({ |
|
|
|
lang: 'zh_CN' |
|
|
|
}).then(list => { |
|
|
|
zhCmsNavigationList.value = toTreeData({ |
|
|
|
data: list.map((d) => { |
|
|
|
return { ...d, key: d.navigationId, value: d.navigationId }; |
|
|
|
return {...d, key: d.navigationId, value: d.navigationId}; |
|
|
|
}), |
|
|
|
idField: 'navigationId', |
|
|
|
parentIdField: 'parentId' |
|
|
@ -527,11 +528,11 @@ watch( |
|
|
|
if (props.parentId) { |
|
|
|
form.parentId = props.parentId; |
|
|
|
} |
|
|
|
if(props.model){ |
|
|
|
if (props.model) { |
|
|
|
form.model = props.model; |
|
|
|
form.path = `/${props.model}`; |
|
|
|
form.component = `/pages/${props.model}/index.vue`; |
|
|
|
if(props.model == 'page'){ |
|
|
|
if (props.model == 'page') { |
|
|
|
form.component = `/pages/[${props.model}]/index.vue`; |
|
|
|
} |
|
|
|
} |
|
|
@ -547,10 +548,10 @@ watch( |
|
|
|
status: 'done' |
|
|
|
}); |
|
|
|
} |
|
|
|
if(form.lang == ''){ |
|
|
|
if (form.lang == '') { |
|
|
|
form.lang = locale.value; |
|
|
|
} |
|
|
|
if(props.data.parentPosition){ |
|
|
|
if (props.data.parentPosition) { |
|
|
|
form.position = props.data.parentPosition; |
|
|
|
} |
|
|
|
// if (props.data.type == 2) { |
|
|
|