修改商品文章筛选内容改为后台获取

v1.1.0
于肖磊 2024-12-06 17:35:32 +08:00
parent 0611526d9e
commit 529ec678f2
14 changed files with 121 additions and 122 deletions

View File

@ -17,12 +17,12 @@
</el-form-item>
<el-form-item label="商品分类">
<el-select v-model="form.category_ids" multiple collapse-tags placeholder="请选择商品分类">
<el-option v-for="item in baseList.product_category_list" :key="item.id" :label="item.name" :value="item.id" />
<el-option v-for="item in common_store.common.goods_category" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
<el-form-item label="指定品牌">
<el-select v-model="form.brand_ids" multiple collapse-tags placeholder="请选择品牌">
<el-option v-for="item in baseList.product_brand_list" :key="item.id" :label="item.name" :value="item.id" />
<el-option v-for="item in common_store.common.brand_list" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
<el-form-item label="显示数量">
@ -30,12 +30,12 @@
</el-form-item>
<el-form-item label="排序类型">
<el-radio-group v-model="form.order_by_type">
<el-radio v-for="item in baseList.sort_list" :key="item.value" :value="item.value">{{ item.name }}</el-radio>
<el-radio v-for="item in common_store.common.goods_order_by_type_list" :key="item.index" :value="item.index">{{ item.name }}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="排序规则">
<el-radio-group v-model="form.order_by_rule">
<el-radio v-for="item in baseList.order_by_rule_list" :key="item.value" :value="item.value">{{ item.name }}</el-radio>
<el-radio v-for="item in common_store.common.data_order_by_rule_list" :key="item.index" :value="item.index">{{ item.name }}</el-radio>
</el-radio-group>
</el-form-item>
</template>
@ -58,7 +58,7 @@
</el-form-item>
<el-form-item label="文章分类">
<el-select v-model="form.category_ids" multiple collapse-tags placeholder="请选择文章分类">
<el-option v-for="item in baseList.article_category_list" :key="item.id" :label="item.name" :value="item.id" />
<el-option v-for="item in common_store.common.article_category" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
<el-form-item label="显示数量">
@ -66,17 +66,12 @@
</el-form-item>
<el-form-item label="排序类型">
<el-radio-group v-model="form.order_by_type">
<template v-if="!isEmpty(baseList.new_sort_list)">
<el-radio v-for="item in baseList.new_sort_list" :key="item.value" :value="item.value">{{ item.name }}</el-radio>
</template>
<template v-else>
<el-radio v-for="item in baseList.sort_list" :key="item.value" :value="item.value">{{ item.name }}</el-radio>
</template>
<el-radio v-for="item in common_store.common.article_order_by_type_list" :key="item.index" :value="item.index">{{ item.name }}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="排序规则">
<el-radio-group v-model="form.order_by_rule">
<el-radio v-for="item in baseList.order_by_rule_list" :key="item.value" :value="item.value">{{ item.name }}</el-radio>
<el-radio v-for="item in common_store.common.data_order_by_rule_list" :key="item.index" :value="item.index">{{ item.name }}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="封面图片">
@ -102,7 +97,7 @@
</el-form-item>
<el-form-item label="品牌分类">
<el-select v-model="form.category_ids" multiple collapse-tags placeholder="请选择品牌分类">
<el-option v-for="item in baseList.brand_category_list" :key="item.id" :label="item.name" :value="item.id" />
<el-option v-for="item in common_store.common.brand_list" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
<el-form-item label="显示数量">
@ -110,12 +105,12 @@
</el-form-item>
<el-form-item label="排序类型">
<el-radio-group v-model="form.order_by_type">
<el-radio v-for="item in baseList.brand_sort_list" :key="item.value" :value="item.value">{{ item.name }}</el-radio>
<el-radio v-for="item in common_store.common.brand_order_by_type_list" :key="item.index" :value="item.index">{{ item.name }}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="排序规则">
<el-radio-group v-model="form.order_by_rule">
<el-radio v-for="item in baseList.order_by_rule_list" :key="item.value" :value="item.value">{{ item.name }}</el-radio>
<el-radio v-for="item in common_store.common.data_order_by_rule_list" :key="item.index" :value="item.index">{{ item.name }}</el-radio>
</el-radio-group>
</el-form-item>
</template>
@ -123,10 +118,12 @@
</template>
<script lang="ts" setup>
import { isEmpty, cloneDeep } from 'lodash';
import { commonStore } from '@/store';
const common_store = commonStore();
//
const props = defineProps({
value: {
type: Object,
type: Object as PropType<any>,
default: () => {},
},
list: {
@ -149,9 +146,11 @@
watchEffect(() => {
keyword.value = props.value.keyword;
form.value = props.value;
//
form.value.order_by_type = Number(props.value?.order_by_type || 0);
form.value.order_by_rule = Number(props.value?.order_by_rule || 0);
drag_list.value = props.list;
});
const keyword_blur = () => {
form.value.keyword = keyword.value;
}

View File

@ -30,7 +30,7 @@
</template>
</template>
<template v-else-if="item.type == 'switch'">
<el-switch v-model="new_dataInterface[item.form_name]" active-value="1" inactive-value="0" />
<el-switch v-model="new_dataInterface[item.form_name]" :active-value="1" :inactive-value="0" />
</template>
<template v-else-if="item.type =='radio'">
<el-radio-group v-model="new_dataInterface[item.form_name]">

View File

@ -97,16 +97,16 @@ const base_list = reactive({
{ name: '选择文章', value: '0' },
{ name: '筛选文章', value: '1' },
],
article_category_list: [] as select_1[],
sort_list: [
{ name: '综合', value: '0' },
{ name: '时间', value: '1' },
{ name: '浏览量', value: '2' },
],
order_by_rule_list: [
{ name: '降序desc', value: '0' },
{ name: '升序asc', value: '1' },
],
// article_category_list: [] as select_1[],
// sort_list: [
// { name: '', value: '0' },
// { name: '', value: '1' },
// { name: '', value: '2' },
// ],
// order_by_rule_list: [
// { name: 'desc', value: '0' },
// { name: 'asc', value: '1' },
// ],
field_show_list: [
{ name: '文章标题', value: '3' },
{ name: '日期时间', value: '0' },
@ -117,12 +117,12 @@ const base_list = reactive({
const emits = defineEmits(['theme_change']);
onMounted(() => {
nextTick(() => {
// common_store.common.article_category
if (common_store.common.article_category.length > 0) {
base_list.article_category_list = common_store.common.article_category;
}
});
// nextTick(() => {
// // common_store.common.article_category
// if (common_store.common.article_category.length > 0) {
// base_list.article_category_list = common_store.common.article_category;
// }
// });
//
const { content_img_width = '', content_img_height = '' } = data.value;
//

View File

@ -127,16 +127,16 @@ const base_list = reactive({
{ name: '选择文章', value: '0' },
{ name: '筛选文章', value: '1' },
],
article_category_list: [] as select_1[],
sort_list: [
{ name: '综合', value: '0' },
{ name: '时间', value: '1' },
{ name: '浏览量', value: '2' },
],
order_by_rule_list: [
{ name: '降序desc', value: '0' },
{ name: '升序asc', value: '1' },
],
// article_category_list: [] as select_1[],
// sort_list: [
// { name: '', value: '0' },
// { name: '', value: '1' },
// { name: '', value: '2' },
// ],
// order_by_rule_list: [
// { name: 'desc', value: '0' },
// { name: 'asc', value: '1' },
// ],
field_show_list: [
{ name: '文章标题', value: '3' },
{ name: '日期时间', value: '0' },
@ -146,12 +146,12 @@ const base_list = reactive({
});
const emits = defineEmits(['theme_change']);
onMounted(() => {
nextTick(() => {
// common_store.common.article_category
if (common_store.common.article_category.length > 0) {
base_list.article_category_list = common_store.common.article_category;
}
});
// nextTick(() => {
// // common_store.common.article_category
// if (common_store.common.article_category.length > 0) {
// base_list.article_category_list = common_store.common.article_category;
// }
// });
//
const { content_img_width = '', content_img_height = '' } = styles;
//

View File

@ -132,10 +132,8 @@ watchEffect(() => {
let value : number | string | Array<any> = '';
if (item.type == 'checkbox' || item.type == 'select' && +item?.config?.is_multiple == 1) { //
value = item?.config?.default || [];
} else if (item.type == 'input' && item?.config?.type == 'number') { //
value = item?.config?.default || 0;
} else if (item.type == 'switch') { //
value = item?.config?.default || "0";
} else if ((item.type == 'input' && item?.config?.type == 'number') || item.type == 'switch') { // /
value = Number(item?.config?.default || 0);
} else { //
value = item?.config?.default || '';
}

View File

@ -77,7 +77,7 @@
<model-icon-style :key="key" v-model:height="center_height" :options="model_data_source" :value="diy_data"></model-icon-style>
</template>
<template v-else-if="diy_data.key == 'panel'">
<model-panel-style :key="key" v-model:height="center_height" :value="diy_data"></model-panel-style>
<model-panel-style :key="key" v-model:height="center_height" :options="model_data_source" :value="diy_data"></model-panel-style>
</template>
<template v-else>
<div class="w h flex align-c bg-f">
@ -326,10 +326,8 @@ const changeDataSource = (key: string) => {
let value : number | string | Array<any> = '';
if (item.type == 'checkbox' || (item.type == 'select' && +item?.config?.is_multiple == 1)) { //
value = item?.config?.default || [];
} else if (item.type == 'input' && item?.config?.type == 'number') { //
value = item?.config?.default || 0;
} else if (item.type == 'switch') {
value = item?.config?.default || "0";
} else if ((item.type == 'input' && item?.config?.type == 'number') || item.type == 'switch') { // /
value = Number(item?.config?.default || 0);
} else {
value = item?.config?.default || '';
}

View File

@ -81,32 +81,32 @@ const base_list = reactive({
{ name: '指定商品', value: '0' },
{ name: '筛选商品', value: '1' },
],
product_category_list: [] as select_1[],
product_brand_list: [] as select_1[],
sort_list: [
{ name: '综合', value: '0' },
{ name: '销量', value: '1' },
{ name: '热度', value: '2' },
{ name: '价格', value: '3' },
{ name: '最新', value: '4' },
],
order_by_rule_list: [
{ name: '降序(desc)', value: '0' },
{ name: '升序(asc)', value: '1' },
],
// product_category_list: [] as select_1[],
// product_brand_list: [] as select_1[],
// sort_list: [
// { name: '', value: '0' },
// { name: '', value: '1' },
// { name: '', value: '2' },
// { name: '', value: '3' },
// { name: '', value: '4' },
// ],
// order_by_rule_list: [
// { name: '(desc)', value: '0' },
// { name: '(asc)', value: '1' },
// ],
});
const emits = defineEmits(['theme_change']);
onBeforeMount(() => {
nextTick(() => {
// common_store.common.article_category
const interval = setInterval(() => {
if (common_store.common.goods_category.length > 0 || common_store.common.brand_list.length > 0) {
base_list.product_category_list = common_store.common.goods_category;
base_list.product_brand_list = common_store.common.brand_list;
clearInterval(interval);
}
}, 1000);
});
// nextTick(() => {
// // common_store.common.article_category
// const interval = setInterval(() => {
// if (common_store.common.goods_category.length > 0 || common_store.common.brand_list.length > 0) {
// base_list.product_category_list = common_store.common.goods_category;
// base_list.product_brand_list = common_store.common.brand_list;
// clearInterval(interval);
// }
// }, 1000);
// });
//
const { content_img_width = '', content_img_height = '' } = data.value;
//

View File

@ -120,36 +120,36 @@ const base_list = reactive({
{ name: '指定商品', value: '0' },
{ name: '筛选商品', value: '1' },
],
product_category_list: [] as select_1[],
product_brand_list: [] as select_1[],
sort_list: [
{ name: '综合', value: '0' },
{ name: '销量', value: '1' },
{ name: '热度', value: '2' },
{ name: '价格', value: '3' },
{ name: '最新', value: '4' },
],
order_by_rule_list: [
{ name: '降序desc', value: '0' },
{ name: '升序asc', value: '1' },
],
list_show_list: [
{ name: '日期时间', value: '0' },
{ name: '浏览量', value: '1' },
],
// product_category_list: [] as select_1[],
// product_brand_list: [] as select_1[],
// sort_list: [
// { name: '', value: '0' },
// { name: '', value: '1' },
// { name: '', value: '2' },
// { name: '', value: '3' },
// { name: '', value: '4' },
// ],
// order_by_rule_list: [
// { name: 'desc', value: '0' },
// { name: 'asc', value: '1' },
// ],
// list_show_list: [
// { name: '', value: '0' },
// { name: '', value: '1' },
// ],
});
const emits = defineEmits(['theme_change']);
onBeforeMount(() => {
nextTick(() => {
// common_store.common.article_category
const interval = setInterval(() => {
if (common_store.common.goods_category.length > 0 || common_store.common.brand_list.length > 0) {
base_list.product_category_list = common_store.common.goods_category;
base_list.product_brand_list = common_store.common.brand_list;
clearInterval(interval);
}
}, 1000);
});
// nextTick(() => {
// // common_store.common.article_category
// const interval = setInterval(() => {
// if (common_store.common.goods_category.length > 0 || common_store.common.brand_list.length > 0) {
// base_list.product_category_list = common_store.common.goods_category;
// base_list.product_brand_list = common_store.common.brand_list;
// clearInterval(interval);
// }
// }, 1000);
// });
//
const { content_img_width = '', content_img_height = '' } = styles.value;
//

View File

@ -20,8 +20,8 @@ interface DefaultArticleList {
data_ids: string;
data_auto_list: ArticleList[];
number: number;
order_by_type: string;
order_by_rule: string;
order_by_type: number;
order_by_rule: number;
field_show: string[];
is_cover: string;
seckill_subscript_show: string;

View File

@ -15,8 +15,8 @@ interface articleTabsList {
keyword: string;
category_ids: string[];
number: number;
order_by_type: string;
order_by_rule: string;
order_by_type: number;
order_by_rule: number;
is_cover: string;
data_ids: string;
data_list: ArticleList[];

View File

@ -17,8 +17,8 @@ interface DefaultProductList {
data_auto_list: string[];
is_price_solo: string;
number: number;
order_by_type: string;
order_by_rule: string;
order_by_type: number;
order_by_rule: number;
is_show: string[];
static_img: uploadList[];
is_shop_show: string;

View File

@ -14,8 +14,8 @@ interface articleTabsList {
brand_ids: string[];
data_ids: string[];
number: number;
order_by_type: string;
order_by_rule: string;
order_by_type: number;
order_by_rule: number;
data_list: [];
data_auto_list: [];
}

View File

@ -1,7 +1,7 @@
interface DefaultSetting {
page_size: number;
order_by_type: string;
order_by_rule: string;
order_by_type: number;
order_by_rule: number;
is_cover: string;
category_ids: string[];
brand_ids: string[];
@ -10,8 +10,8 @@ interface DefaultSetting {
const defaultSetting: DefaultSetting = {
page_size: 4,
order_by_type: '0',
order_by_rule: '0',
order_by_type: 0,
order_by_rule: 0,
// 文章封面
is_cover: '0',
// 分类id

View File

@ -15,6 +15,10 @@ export const commonStore = defineStore('common', () => {
module_list: [] as any[], //---- 模块列表
page_link_list: [] as any[], //---- 页面链接
plugins: {} as any, //---- 插件
article_order_by_type_list: [] as any[], //---- 文章排序
goods_order_by_type_list: [] as any[], //---- 商品排序
data_order_by_rule_list: [] as any[], //---- 数据排序
brand_order_by_type_list: [] as any[], //---- 品牌排序
config: {
common_amap_map_ak: '',
common_amap_map_safety_ak: '',