parent
ead30f62a8
commit
56996efdec
|
|
@ -13,6 +13,7 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"@types/dompurify": "^3.0.5",
|
||||
"@types/qrcode": "^1.5.5",
|
||||
"@vueuse/core": "^10.2.1",
|
||||
"@wangeditor/editor": "^5.1.23",
|
||||
"@wangeditor/editor-for-vue": "^5.1.12",
|
||||
|
|
@ -20,7 +21,7 @@
|
|||
"dompurify": "^3.1.6",
|
||||
"element-plus": "^2.3.7",
|
||||
"pinia": "^2.1.3",
|
||||
"qrcode": "^1.5.3",
|
||||
"qrcode": "^1.5.4",
|
||||
"swiper": "^11.1.5",
|
||||
"terser": "^5.31.5",
|
||||
"tsparticles": "^2.11.0",
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<!-- 上传组件 -->
|
||||
<template>
|
||||
<el-dialog v-model="dialog_visible" fullscreen @close="close_event">
|
||||
<el-dialog v-model="dialog_visible" fullscreen :close-on-click-modal="false" @close="close_event">
|
||||
<template #header>
|
||||
<div class="title re">
|
||||
<div class="tc size-16 fw">编辑热区</div>
|
||||
|
|
@ -57,7 +57,7 @@
|
|||
</span>
|
||||
</template>
|
||||
</el-dialog>
|
||||
<el-dialog v-model="hot_dialog_visible" width="560" append-to-body draggable @close="hot_close_event">
|
||||
<el-dialog v-model="hot_dialog_visible" width="560" append-to-body draggable :close-on-click-modal="false" @close="hot_close_event">
|
||||
<template #header>
|
||||
<div class="title re">
|
||||
<div class="tc size-16 fw">设置热区</div>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<template>
|
||||
<el-dialog v-model="dialog_visible" class="radius-lg" width="1168" draggable append-to-body @close="close_event">
|
||||
<el-dialog v-model="dialog_visible" class="radius-lg" width="1168" draggable append-to-body :close-on-click-modal="false" @close="close_event">
|
||||
<template #header>
|
||||
<div class="title center re">
|
||||
<div class="tc size-16 fw">主题选择</div>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<template>
|
||||
<el-dialog v-model="dialog_visible_category_operate" class="radius-lg" width="500" draggable append-to-body>
|
||||
<el-dialog v-model="dialog_visible_category_operate" class="radius-lg" width="500" :close-on-click-modal="false" draggable append-to-body>
|
||||
<template #header>
|
||||
<div class="title center re">
|
||||
<div class="tc size-16 fw">{{ type == 'add' ? '添加' : '编辑' }}附件分类</div>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<!-- 上传组件 -->
|
||||
<template>
|
||||
<el-dialog v-model="dialog_visible" class="radius-lg" width="1168" draggable append-to-body>
|
||||
<el-dialog v-model="dialog_visible" class="radius-lg" width="1168" draggable :close-on-click-modal="false" append-to-body>
|
||||
<template #header>
|
||||
<div class="title re">
|
||||
<el-radio-group v-model="upload_type" is-button @change="upload_type_change">
|
||||
|
|
@ -70,7 +70,7 @@
|
|||
<el-scrollbar v-loading="img_loading" height="440px">
|
||||
<div v-if="upload_list.length > 0" class="flex-row flex-wrap align-c gap-y-15 gap-x-10 pa-10">
|
||||
<div v-for="(item, index) in upload_list" :key="index" class="item" @click="check_img_event(item)">
|
||||
<el-badge :value="view_list_value.findIndex((i) => i.id === item.id) == -1 ? '' : view_list_value.findIndex((i) => i.id === item.id) + 1" class="badge flex-col gap-5 w" :hidden="view_list_value.findIndex((i) => i.id === item.id) == -1">
|
||||
<el-badge :value="view_list_value.findIndex((i) => i.id === item.id) == -1 ? '' : view_list_value.findIndex((i) => i.id === item.id) + 1" class="badge flex-col gap-5 w" :hidden="view_list_value.findIndex((i) => i.id === item.id) == -1 || limit == 1">
|
||||
<div class="item-content re br-f5 radius">
|
||||
<template v-if="upload_type == 'video'">
|
||||
<video :src="item.url" class="w h" @error="handle_error(index)"></video>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<!-- 上传组件 -->
|
||||
<template>
|
||||
<el-dialog v-model="dialogVisible" class="radius-lg" width="1168" draggable append-to-body @close="close_dialog">
|
||||
<el-dialog v-model="dialogVisible" class="radius-lg" width="1168" draggable append-to-body :close-on-click-modal="false" @close="close_dialog">
|
||||
<template #header>
|
||||
<div class="title center re">
|
||||
<div class="tc size-16 fw">{{ upload_type_name }}上传</div>
|
||||
|
|
@ -17,7 +17,7 @@
|
|||
</el-form-item>
|
||||
<el-form-item label="上传至分组" prop="category_id">
|
||||
<div class="form-item-width">
|
||||
<el-cascader v-model="form.category_id" class="w" :options="cascader_data" placeholder="请选择" :show-all-levels="false" filterable clearable change="category_id_change"></el-cascader>
|
||||
<el-cascader v-model="form.category_id" class="w" :options="cascader_data" placeholder="请选择" :show-all-levels="false" filterable clearable @change="category_id_change"></el-cascader>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<template v-if="form.type == 'loc'">
|
||||
|
|
@ -101,8 +101,8 @@
|
|||
<div class="table-cell-operate">操作</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="scan_file_list.length > 0">
|
||||
<el-scrollbar height="224px">
|
||||
<el-scrollbar height="224px">
|
||||
<div v-if="scan_file_list.length > 0">
|
||||
<div class="table-body">
|
||||
<div v-for="(item, index) in scan_file_list" :key="index" class="table-row">
|
||||
<div class="table-cell">
|
||||
|
|
@ -133,17 +133,17 @@
|
|||
<div class="table-cell-operate" @click="del_already_upload(item.id, index)">删除</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-scrollbar>
|
||||
</div>
|
||||
<div v-else>
|
||||
<no-data height="280px"></no-data>
|
||||
</div>
|
||||
</div>
|
||||
<div v-else>
|
||||
<no-data height="280px"></no-data>
|
||||
</div>
|
||||
</el-scrollbar>
|
||||
</div>
|
||||
</template>
|
||||
<template v-else-if="form.type == 'web'">
|
||||
<el-form-item label="网络图片">
|
||||
<div class="flex-row align-c gap-10">
|
||||
<el-input v-model="form.web_image" class="form-item-width" placeholder="请输入网络图片地址" />
|
||||
<el-input v-model="form.web_image" class="form-item-width" placeholder="请输入网络图片地址" clearable />
|
||||
<div class="c-pointer cr-primary size-12" @click="extract_images(ruleFormRef)">提取图片</div>
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
|
@ -224,7 +224,8 @@ const rules = reactive<FormRules>({
|
|||
});
|
||||
// 是否给二维码加模糊效果
|
||||
const is_mask = ref(true);
|
||||
const timer = ref<number | null>(null);
|
||||
const timer = ref<any>(null);
|
||||
const scan_uuid = ref('');
|
||||
// 上传方式
|
||||
const upload_type_change = (type: any) => {
|
||||
// 清除之前的定时器(如果存在)
|
||||
|
|
@ -235,20 +236,19 @@ const upload_type_change = (type: any) => {
|
|||
}
|
||||
if (type == 'scan') {
|
||||
timer.value = setInterval(async () => {
|
||||
if (scan_uuid.value.toString().length > 0) {
|
||||
if (scan_uuid.value.length > 0) {
|
||||
const { data } = await UploadAPI.uploadQrcode({ key: scan_uuid.value });
|
||||
scan_file_list.value = data;
|
||||
scan_file_list.value = data || [];
|
||||
}
|
||||
}, 3000);
|
||||
}
|
||||
};
|
||||
const scan_uuid = ref('');
|
||||
// 选择分组
|
||||
const category_id_change = (val: any) => {
|
||||
if (val && val.length > 0) {
|
||||
scan_file_list.value = [];
|
||||
is_mask.value = false;
|
||||
scan_uuid.value = get_math();
|
||||
scan_uuid.value = get_math() + '';
|
||||
let new_url = '';
|
||||
if (import.meta.env.VITE_APP_BASE_API == '/dev-api') {
|
||||
new_url = get_before_string(import.meta.env.VITE_APP_BASE_API_URL);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<template>
|
||||
<el-dialog v-model="dialogVisible" class="radius-lg" width="1168" draggable append-to-body @close="close_event">
|
||||
<el-dialog v-model="dialogVisible" class="radius-lg" width="1168" draggable append-to-body :close-on-click-modal="false" @close="close_event">
|
||||
<template #header>
|
||||
<div class="title center re">
|
||||
<div class="tc size-16 fw">{{ dialog_title }}</div>
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
<el-button class="btn-white" @click="save_close_event">保存关闭</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<el-dialog v-model="dialog_visible" class="radius-lg" width="650" draggable append-to-body>
|
||||
<el-dialog v-model="dialog_visible" class="radius-lg" width="650" draggable :close-on-click-modal="false" append-to-body>
|
||||
<template #header>
|
||||
<div class="title re">
|
||||
<div class="middle size-16 fw">附件管理</div>
|
||||
|
|
@ -148,17 +148,18 @@ const confirm_event = async (formEl: FormInstance | undefined) => {
|
|||
border-color: #fff;
|
||||
color: #fff;
|
||||
&:hover {
|
||||
background-color: #666;
|
||||
background-color: #fff;
|
||||
border-color: #fff;
|
||||
color: $cr-primary;
|
||||
}
|
||||
}
|
||||
.btn-white {
|
||||
background-color: #fff;
|
||||
border-color: #fff;
|
||||
// color: #{$cr-primary};
|
||||
color: $cr-primary;
|
||||
&:hover {
|
||||
background-color: $cr-primary;
|
||||
border-color: $cr-primary;
|
||||
background-color: #1e7ede;
|
||||
border-color: #1e7ede;
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -413,6 +413,13 @@
|
|||
dependencies:
|
||||
undici-types "~6.13.0"
|
||||
|
||||
"@types/qrcode@^1.5.5":
|
||||
version "1.5.5"
|
||||
resolved "https://registry.yarnpkg.com/@types/qrcode/-/qrcode-1.5.5.tgz#993ff7c6b584277eee7aac0a20861eab682f9dac"
|
||||
integrity sha512-CdfBi/e3Qk+3Z/fXYShipBT13OJ2fDO2Q2w5CIP5anLTLIndQG9z6P1cnm+8zCWSpm5dnxMFd/uREtb0EXuQzg==
|
||||
dependencies:
|
||||
"@types/node" "*"
|
||||
|
||||
"@types/semver@^7.3.12":
|
||||
version "7.5.8"
|
||||
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e"
|
||||
|
|
@ -3761,7 +3768,7 @@ punycode@^2.1.0:
|
|||
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5"
|
||||
integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==
|
||||
|
||||
qrcode@^1.5.3:
|
||||
qrcode@^1.5.4:
|
||||
version "1.5.4"
|
||||
resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.5.4.tgz#5cb81d86eb57c675febb08cf007fff963405da88"
|
||||
integrity sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==
|
||||
|
|
|
|||
Loading…
Reference in New Issue