Merge branch 'dev-sws'

v1.0.0
gongfuxiang 2024-10-21 15:41:15 +08:00
commit a878573c78
18 changed files with 198 additions and 180 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -5,6 +5,13 @@
"css_prefix_text": "icon-",
"description": "",
"glyphs": [
{
"icon_id": "42182269",
"name": "圆背景右箭头",
"font_class": "arrow-right-bg-round",
"unicode": "e7a5",
"unicode_decimal": 59301
},
{
"icon_id": "42124616",
"name": "删除",
@ -1090,13 +1097,6 @@
"unicode": "e6c3",
"unicode_decimal": 59075
},
{
"icon_id": "37288627",
"name": "qiandao-dqxz",
"font_class": "qiandao-dqxz",
"unicode": "e6bc",
"unicode_decimal": 59068
},
{
"icon_id": "37288626",
"name": "分享-正方形",
@ -1176,112 +1176,105 @@
},
{
"icon_id": "37187704",
"name": "icon-zhibo-zt",
"font_class": "zhibo-zt",
"name": "暂停",
"font_class": "player-pause",
"unicode": "e6b5",
"unicode_decimal": 59061
},
{
"icon_id": "37187703",
"name": "icon-zhibo-jies",
"font_class": "zhibo-jies",
"name": "结束",
"font_class": "player-end",
"unicode": "e6b6",
"unicode_decimal": 59062
},
{
"icon_id": "37176907",
"name": "icon-md-phone",
"name": "电话",
"font_class": "md-phone",
"unicode": "e6b1",
"unicode_decimal": 59057
},
{
"icon_id": "37176908",
"name": "icon-md-dh",
"name": "发送",
"font_class": "md-dh",
"unicode": "e6b2",
"unicode_decimal": 59058
},
{
"icon_id": "37137572",
"name": "icon-index-zxmd-phone",
"name": "电话+背景",
"font_class": "index-zxmd-phone",
"unicode": "e6ac",
"unicode_decimal": 59052
},
{
"icon_id": "37137571",
"name": "icon-index-zxmd-dh",
"name": "发送+背景",
"font_class": "index-zxmd-dh",
"unicode": "e6ad",
"unicode_decimal": 59053
},
{
"icon_id": "37137569",
"name": "icon-index-zxmd-time",
"name": "时间",
"font_class": "index-zxmd-time",
"unicode": "e6ae",
"unicode_decimal": 59054
},
{
"icon_id": "37137568",
"name": "icon-index-zxmd-dress",
"name": "地址定位",
"font_class": "index-zxmd-dress",
"unicode": "e6af",
"unicode_decimal": 59055
},
{
"icon_id": "37131264",
"name": "icon-index-notice",
"name": "通知",
"font_class": "index-notice",
"unicode": "e6a8",
"unicode_decimal": 59048
},
{
"icon_id": "37131263",
"name": "icon-index-search",
"name": "搜索",
"font_class": "index-search",
"unicode": "e6a9",
"unicode_decimal": 59049
},
{
"icon_id": "37113110",
"name": "icon-applet-me-settings-acquiesce",
"name": "我的设置-默认",
"font_class": "applet-me-settings-acquiesce",
"unicode": "e6a6",
"unicode_decimal": 59046
},
{
"icon_id": "37113109",
"name": "icon-applet-me-message-acquiesce",
"name": "我的消息-默认",
"font_class": "applet-me-message-acquiesce",
"unicode": "e6a7",
"unicode_decimal": 59047
},
{
"icon_id": "37112559",
"name": "icon-applet-me-acquiesce",
"name": "我的-默认",
"font_class": "applet-me-acquiesce",
"unicode": "e6a2",
"unicode_decimal": 59042
},
{
"icon_id": "37112562",
"name": "icon-applet-sort-acquiesce",
"font_class": "applet-sort-acquiesce",
"unicode": "e6a5",
"unicode_decimal": 59045
},
{
"icon_id": "37112561",
"name": "icon-applet-index-acquiesce",
"name": "首页",
"font_class": "applet-index-acquiesce",
"unicode": "e6a4",
"unicode_decimal": 59044
},
{
"icon_id": "37112560",
"name": "icon-applet-shop-acquiesce",
"name": "购物车",
"font_class": "applet-shop-acquiesce",
"unicode": "e6a3",
"unicode_decimal": 59043

Binary file not shown.

View File

@ -4,7 +4,7 @@
<upload v-model="row.new_cover" :limit="1" size="40" styles="2"></upload>
<el-image :src="row.data[imgParams]" fit="contain" class="img radius-xs">
<template #error>
<div class="bg-f5 flex-row jc-c align-c radius h w">
<div class="bg-f5 flex-row jc-c align-c radius-xs h w">
<icon name="error-img" size="16" color="9"></icon>
</div>
</template>

View File

@ -1,5 +1,5 @@
<template>
<div class="flex-row gap-10 jc-sb align-c">
<div class="tabs-container flex-row gap-10 jc-sb align-c">
<div class="tabs flex-row oh" :style="`column-gap: ${new_style.tabs_spacing}px;`">
<template v-for="(item, index) in form.tabs_list" :key="index">
<div class="item nowrap flex-col jc-c gap-4" :class="tabs_theme + (index == activeIndex ? ' active' : '')">
@ -16,7 +16,7 @@
</div>
</template>
</div>
<icon v-if="isTabs" :name="new_style.more_icon_class || 'category-more'" :size="new_style.more_icon_size + '' || '14'" :color="new_style.more_icon_color || '#000'"></icon>
<icon v-if="isTabs" :name="new_style.more_icon_class || 'category-more'" :size="new_style.more_icon_size + '' || '14'" :color="new_style.more_icon_color || '#000'" :class="tabs_theme_index == '3' ? 'pb-12' : 'pb-6'"></icon>
</div>
</template>
@ -100,123 +100,124 @@ const icon_tabs_check = () => {
};
</script>
<style lang="scss" scoped>
.tabs {
max-width: 39rem;
.item {
padding: 0 0 0.5rem 0;
// margin: 0 1rem;
position: relative;
transition: all 0.3s ease-in-out;
&:first-of-type {
margin-left: 0;
}
&:last-of-type {
margin-right: 0;
}
.title {
font-size: 1.4rem;
text-align: center;
}
.desc {
font-size: 1.1rem;
color: #999;
text-align: center;
display: none;
}
.bottom_line {
width: 100%;
height: 0.3rem;
border-radius: 1rem;
background-color: red;
position: absolute;
left: 0;
right: 0;
bottom: 0;
display: none;
}
.icon {
position: absolute;
left: 0;
right: 0;
bottom: 0;
text-align: center;
font-size: 2rem;
display: none;
}
.img {
width: 3.9rem;
height: 3.9rem;
border-radius: 100%;
border: 0.1rem solid transparent;
display: none;
}
&.tabs-style-1 {
&.active {
.bottom_line {
display: block;
}
.tabs-container {
.tabs {
max-width: 39rem;
min-height: 3rem;
.item {
padding: 0 0 0.8rem 0;
position: relative;
&:first-of-type {
margin-left: 0;
}
.tabs-bottom-line-theme {
opacity: 0.6;
bottom: 0.8rem;
z-index: 0;
height: 0.6rem;
border-radius: 0;
width: 76%;
left: 12%;
&:last-of-type {
margin-right: 0;
}
}
&.tabs-style-2 {
&.active {
.desc {
background: #ff5e5e;
color: #fff;
}
.title {
font-size: 1.4rem;
text-align: center;
}
.desc {
border-radius: 2rem;
padding: 0.2rem 0.6rem;
display: inline-block;
font-size: 1.1rem;
color: #999;
text-align: center;
display: none;
}
}
&.tabs-style-3 {
&.active {
.title {
background: #ff2222;
border-radius: 2rem;
padding: 0.2rem 1.2rem;
color: #fff;
}
.bottom_line {
width: 100%;
height: 0.3rem;
border-radius: 1rem;
background-color: red;
position: absolute;
left: 0;
right: 0;
bottom: 0.4rem;
display: none;
}
}
&.tabs-style-4 {
padding-bottom: 1.8rem;
&.active {
.title {
color: #ff2222;
}
.icon {
color: #ff2222;
display: block;
}
}
}
&.tabs-style-5 {
align-items: center;
&.active {
.title {
font-size: 1.1rem;
background: #ff5e5e;
border-radius: 2rem;
padding: 0.2rem 0.7rem;
color: #fff;
}
.img {
border-color: #ff5e5e;
}
.icon {
position: absolute;
left: 0;
right: 0;
bottom: 0;
text-align: center;
font-size: 2rem;
display: none;
}
.img {
display: block;
width: 3.9rem;
height: 3.9rem;
border-radius: 100%;
border: 0.1rem solid transparent;
display: none;
}
&.tabs-style-1 {
&.active {
.bottom_line {
display: block;
}
}
.tabs-bottom-line-theme {
opacity: 0.6;
bottom: 1.2rem;
z-index: 0;
height: 0.6rem;
border-radius: 0;
width: 76%;
left: 12%;
}
}
&.tabs-style-2 {
&.active {
.desc {
background: #ff5e5e;
color: #fff;
}
}
.desc {
border-radius: 2rem;
padding: 0.2rem 0.6rem;
display: inline-block;
}
}
&.tabs-style-3 {
&.active {
.title {
background: #ff2222;
border-radius: 2rem;
padding: 0.2rem 1.2rem;
color: #fff;
}
}
}
&.tabs-style-4 {
padding-bottom: 1.2rem;
&.active {
.title {
color: #ff2222;
}
.icon {
color: #ff2222;
display: block;
}
}
}
&.tabs-style-5 {
align-items: center;
&.active {
.title {
font-size: 1.1rem;
background: #ff5e5e;
border-radius: 2rem;
padding: 0.2rem 0.7rem;
color: #fff;
}
.img {
border-color: #ff5e5e;
}
}
.img {
display: block;
}
}
}
}

View File

@ -178,19 +178,19 @@
</div>
<template v-if="type == 'video'">
<video :src="item.url" class="w h"></video>
<div v-if="item.error == true" class="bg-f5 img flex-row jc-c align-c radius h w abs top-0">
<div v-if="item.error == true" class="bg-f5 img flex-row jc-c align-c radius-xs h w abs top-0">
<icon name="video" :size="Number(size) / 2 + ''" color="9"></icon>
</div>
</template>
<template v-else-if="type == 'file'">
<div class="bg-f5 img flex-row jc-c align-c radius h w">
<div class="bg-f5 img flex-row jc-c align-c radius-xs h w">
<icon :name="ext_file_name_list_map.filter((ext) => ext.type == item.type).length > 0 && ext_file_name_list_map.filter((ext) => ext.type == item.type)[0].type == item.type ? ext_file_name_list_map.filter((ext) => ext.type == item.type)[0].icon : 'file'" :size="Number(size) / 2 + ''" color="9"></icon>
</div>
</template>
<template v-else>
<el-image :src="item.url" fit="contain" class="w h radius-xs">
<template #error>
<div class="bg-f5 img flex-row jc-c align-c radius h w">
<div class="bg-f5 img flex-row jc-c align-c radius-xs h w">
<icon name="error-img" :size="Number(size) / 2 + ''" color="9"></icon>
</div>
</template>

View File

@ -496,7 +496,7 @@ const submit_event = async (formEl: FormInstance | undefined) => {
});
}
});
}
}
// else {
// console.log('error submit!', fields);
// }
@ -574,7 +574,7 @@ const reset_data = () => {
dialogVisible.value = false;
form.value = {
type: 'loc',
category_id: [],
category_id: form.value.category_id,
file: [],
qrcode: '',
web_image: '',

View File

@ -12,7 +12,7 @@
</el-input>
</div>
<div class="content">
<el-table :data="tableData" class="w" :header-cell-style="{ background: '#f7f7f7' }" row-key="id" height="438" fixed @row-click="row_click" @select="handle_select" @select-all="handle_select">
<el-table v-loading="loading" :data="tableData" class="w" :header-cell-style="{ background: '#f7f7f7' }" row-key="id" height="438" fixed @row-click="row_click" @select="handle_select" @select-all="handle_select">
<el-table-column v-if="multiple" type="selection" width="60" />
<el-table-column v-else label="#" width="60" type="">
<template #default="scope">
@ -72,6 +72,7 @@ onMounted(() => {
const modelValue = defineModel({ type: Object, default: {} });
const tableData = ref<pageLinkList[]>([]);
const search_value = ref('');
const loading = ref(false);
const init = () => {
template_selection.value = '';
category_ids.value = '';
@ -105,10 +106,14 @@ const get_list = (new_page: number) => {
category_ids: category_ids.value,
page_size: page_size.value,
};
loading.value = true;
UrlValueAPI.getArticleList(new_data).then((res: any) => {
tableData.value = res.data.data_list;
data_total.value = res.data.data_total;
page.value = res.data.page;
setTimeout(() => {
loading.value = false;
}, 500);
});
};
//#region -----------------------------------------------end

View File

@ -12,7 +12,7 @@
</el-input>
</div>
<div class="content">
<el-table :data="tableData" class="w" :header-cell-style="{ background: '#f7f7f7' }" row-key="id" height="438" fixed @row-click="row_click" @select="handle_select" @select-all="handle_select">
<el-table v-loading="loading" :data="tableData" class="w" :header-cell-style="{ background: '#f7f7f7' }" row-key="id" height="438" fixed @row-click="row_click" @select="handle_select" @select-all="handle_select">
<el-table-column v-if="multiple" type="selection" width="60" />
<el-table-column v-else label="#" width="60" type="">
<template #default="scope">
@ -73,11 +73,7 @@ onMounted(() => {
const modelValue = defineModel({ type: Object, default: {} });
const tableData = ref<pageLinkList[]>([]);
const search_value = ref('');
const cascader_config = {
value: 'id',
label: 'name',
children: 'items',
};
const loading = ref(false);
const init = () => {
template_selection.value = '';
category_ids.value = [];
@ -110,10 +106,14 @@ const get_list = (new_page: number) => {
page_size: page_size.value,
category_ids: brand_ids.value,
};
loading.value = true;
UrlValueAPI.getBrandList(new_data).then((res: any) => {
tableData.value = res.data.data_list;
data_total.value = res.data.data_total;
page.value = res.data.page;
setTimeout(() => {
loading.value = false;
}, 500);
});
};
//#region -----------------------------------------------end

View File

@ -12,7 +12,7 @@
</el-input>
</div>
<div class="content">
<el-table :data="tableData" class="w" :header-cell-style="{ background: '#f7f7f7' }" row-key="id" height="438" fixed @row-click="row_click" @select="handle_select" @select-all="handle_select">
<el-table v-loading="loading" :data="tableData" class="w" :header-cell-style="{ background: '#f7f7f7' }" row-key="id" height="438" fixed @row-click="row_click" @select="handle_select" @select-all="handle_select">
<el-table-column v-if="multiple" type="selection" width="60" />
<el-table-column v-else label="#" width="60" type="">
<template #default="scope">
@ -71,6 +71,7 @@ onMounted(() => {
const modelValue = defineModel({ type: Object, default: {} });
const tableData = ref<pageLinkList[]>([]);
const search_value = ref('');
const loading = ref(false);
const init = () => {
template_selection.value = '';
type.value = '';
@ -106,10 +107,14 @@ const get_list = (new_page: number) => {
type: type.value,
page_size: page_size.value,
};
loading.value = true;
UrlValueAPI.getCouponList(new_data).then((res: any) => {
tableData.value = res.data.data_list;
data_total.value = res.data.data_total;
page.value = res.data.page;
setTimeout(() => {
loading.value = false;
}, 500);
});
};
//#region -----------------------------------------------end

View File

@ -13,7 +13,7 @@
</el-input>
</div>
<div class="content">
<el-table :data="tableData" class="w" :header-cell-style="{ background: '#f7f7f7' }" row-key="id" height="438" fixed @row-click="row_click" @select="handle_select" @select-all="handle_select">
<el-table v-loading="loading" :data="tableData" class="w" :header-cell-style="{ background: '#f7f7f7' }" row-key="id" height="438" fixed @row-click="row_click" @select="handle_select" @select-all="handle_select">
<el-table-column v-if="multiple" type="selection" width="60" />
<el-table-column v-else label="#" width="60" type="">
<template #default="scope">
@ -75,6 +75,7 @@ onMounted(() => {
const modelValue = defineModel({ type: Object, default: {} });
const tableData = ref<pageLinkList[]>([]);
const search_value = ref('');
const loading = ref(false);
const cascader_config = {
value: 'id',
label: 'name',
@ -120,10 +121,14 @@ const get_list = (new_page: number) => {
page_size: page_size.value,
category_ids: category_ids.value.length > 0 ? category_ids.value[category_ids.value.length - 1] : '',
};
loading.value = true;
UrlValueAPI.getGoodsList(new_data).then((res: any) => {
tableData.value = res.data.data_list;
data_total.value = res.data.data_total;
page.value = res.data.page;
setTimeout(() => {
loading.value = false;
}, 500);
});
};
//#region -----------------------------------------------end

View File

@ -9,7 +9,7 @@
</el-input>
</div>
<div class="content">
<el-table :data="tableData" class="w" :header-cell-style="{ background: '#f7f7f7' }" row-key="id" height="438" fixed @row-click="row_click" @select="handle_select" @select-all="handle_select">
<el-table v-loading="loading" :data="tableData" class="w" :header-cell-style="{ background: '#f7f7f7' }" row-key="id" height="438" fixed @row-click="row_click" @select="handle_select" @select-all="handle_select">
<el-table-column v-if="multiple" type="selection" width="60" />
<el-table-column v-else label="#" width="60" type="">
<template #default="scope">
@ -72,7 +72,7 @@ onMounted(() => {
const modelValue = defineModel({ type: Object, default: {} });
const tableData = ref<pageLinkList[]>([]);
const search_value = ref('');
const loading = ref(false);
const init = () => {
template_selection.value = '';
search_value.value = '';
@ -97,23 +97,33 @@ const get_list = (new_page: number) => {
page_size: page_size.value,
keywords: search_value.value,
};
loading.value = true;
if (props.type == 'diy') {
UrlValueAPI.getDiyList(new_data).then((res: any) => {
tableData.value = res.data.data_list;
data_total.value = res.data.data_total;
page.value = res.data.page;
setTimeout(() => {
loading.value = false;
}, 500);
});
} else if (props.type == 'design') {
UrlValueAPI.getDesignList(new_data).then((res: any) => {
tableData.value = res.data.data_list;
data_total.value = res.data.data_total;
page.value = res.data.page;
setTimeout(() => {
loading.value = false;
}, 500);
});
} else if (props.type == 'custom-view') {
UrlValueAPI.getCustomList(new_data).then((res: any) => {
tableData.value = res.data.data_list;
data_total.value = res.data.data_total;
page.value = res.data.page;
setTimeout(() => {
loading.value = false;
}, 500);
});
}
};

View File

@ -87,10 +87,10 @@ const state = reactive({
});
// 使toRefs
const { form, new_style } = toRefs(state);
const outer_spacing = computed(() => new_style.value.image_spacing + 'px');
const outer_sx = computed(() => -(new_style.value.image_spacing / 2) + 'px');
const outer_spacing = computed(() => (new_style.value?.image_spacing || 0) + 'px');
const outer_sx = computed(() => -((new_style.value?.image_spacing || 0) / 2) + 'px');
//
const spacing = computed(() => new_style.value.image_spacing / 2 + 'px');
const spacing = computed(() => (new_style.value?.image_spacing || 0) / 2 + 'px');
//
const content_radius = computed(() => radius_computer(new_style.value.data_radius));
//

View File

@ -57,10 +57,12 @@ const state = reactive({
});
// 使toRefs
const { form, new_style } = toRefs(state);
const outer_spacing = computed(() => new_style.value.image_spacing + 'px');
const outer_sx = computed(() => -(new_style.value.image_spacing / 2) + 'px');
const new_style_spacing = computed(() => form.value.style_actived === 10 ? 0 : (new_style.value?.image_spacing || 0));
const outer_spacing = computed(() => new_style_spacing.value + 'px');
const outer_sx = computed(() => -(new_style_spacing.value / 2) + 'px');
//
const spacing = computed(() => new_style.value.image_spacing / 2 + 'px');
const spacing = computed(() => new_style_spacing.value / 2 + 'px');
//
const content_img_radius = computed(() => radius_computer(new_style.value));
//#region

View File

@ -24,7 +24,7 @@
<card-container>
<div class="mb-12">更多样式</div>
<el-form-item label="图标">
<upload v-model:icon-value="form.more_icon_class" type="icon" is-icon :limit="1" size="50"></upload>
<upload v-model:icon-value="form.more_icon_class" type="icon" :is-delete="false" is-icon :limit="1" size="50"></upload>
</el-form-item>
<el-form-item label="图标颜色">
<color-picker v-model="form.more_icon_color" default-color="#CCCCCC"></color-picker>

View File

@ -134,7 +134,7 @@ const defaultTabs: defaultTabs = {
tabs_color: 'rgba(51,51,51,1)',
tabs_spacing: 20,
// 更多设置
more_icon_class: 'fenlei-more',
more_icon_class: 'category-more',
more_icon_color: '#000',
more_icon_size: 14,
// 选项卡与轮播之间的间距

View File

@ -26,7 +26,7 @@ const pro_url = window.location.href.substring(0, index);
const service = axios.create({
baseURL: import.meta.env.VITE_APP_BASE_API == '/dev-api' ? import.meta.env.VITE_APP_BASE_API : pro_url + '?s=',
timeout: 60000,
headers: { 'Content-Type': 'application/json;charset=utf-8' },
headers: { 'Content-Type': 'application/json;charset=utf-8', 'X-Requested-With': 'XMLHttpRequest' },
});
/** @ts-ignore */
// 请求拦截器
@ -43,6 +43,7 @@ service.interceptors.request.use(
config.url = config.url + '&token=' + JSON.parse(cookie).token;
}
}
console.log(config);
return config;
},
(error: any) => {