Compare commits
No commits in common. "4d0e340fee5493c5eae1657aba1eb2a80100e977" and "0a81cadeb2f1c19a6bc15b39ecde3992a6072145" have entirely different histories.
4d0e340fee
...
0a81cadeb2
@ -48,7 +48,6 @@ export interface BannedVO {
|
||||
* 状态(0=已发布,1=已下架)
|
||||
*/
|
||||
handlingStatus: number;
|
||||
nickName?: string | number;
|
||||
|
||||
/**
|
||||
* 1=用户,2=笔记,3=活动,4=评论
|
||||
@ -107,7 +106,6 @@ export interface BannedForm extends BaseEntity {
|
||||
* 状态(0=已发布,1=已下架)
|
||||
*/
|
||||
handlingStatus?: number;
|
||||
nickName?: string | number;
|
||||
|
||||
/**
|
||||
* 1=用户,2=笔记,3=活动,4=评论
|
||||
@ -122,7 +120,6 @@ export interface BannedQuery extends PageQuery {
|
||||
* 被举报内容id
|
||||
*/
|
||||
contentId?: string | number;
|
||||
nickName?: string | number;
|
||||
|
||||
/**
|
||||
* 被举报用户ID
|
||||
|
@ -199,7 +199,7 @@ export interface DyUserForm extends BaseEntity {
|
||||
/**
|
||||
* 封禁天数
|
||||
*/
|
||||
banDays?: number | string;
|
||||
banDays?: number;
|
||||
|
||||
/**
|
||||
* 经度
|
||||
|
@ -65,7 +65,7 @@ export const delNotebook = (id: string | number | Array<string | number>) => {
|
||||
* 查询标签
|
||||
* @param id
|
||||
*/
|
||||
export const tagall = () => {
|
||||
export const tagall = (): AxiosPromise<NotebookVO> => {
|
||||
return request({
|
||||
url: '/manage/tag/all',
|
||||
method: 'get'
|
||||
@ -75,7 +75,7 @@ export const tagall = () => {
|
||||
* 查询景点
|
||||
* @param query
|
||||
*/
|
||||
export const contentall = (query?: any) => {
|
||||
export const contentall = (query?: NotebookQuery): AxiosPromise<NotebookVO> => {
|
||||
return request({
|
||||
url: '/manage/content/all',
|
||||
method: 'get',
|
||||
|
@ -77,7 +77,7 @@ export const getRegionTree = (query?: RouteForm) => {
|
||||
* 住宿下拉列表
|
||||
* @param query
|
||||
*/
|
||||
export const hotelall = (query?: any) => {
|
||||
export const hotelall = (query?: RouteForm) => {
|
||||
return request({
|
||||
url: '/manage/hotel/all',
|
||||
method: 'get',
|
||||
|
@ -105,15 +105,3 @@ export const commentList = (query: any): AxiosPromise<ArticleVO[]> => {
|
||||
params: query
|
||||
});
|
||||
};
|
||||
/**
|
||||
*
|
||||
* @param query
|
||||
* @returns
|
||||
*/
|
||||
export const recommend = (query: any) => {
|
||||
return request({
|
||||
url: '/manage/notebook/recommend-list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 9.2 KiB |
Binary file not shown.
Before Width: | Height: | Size: 13 KiB |
Binary file not shown.
Before Width: | Height: | Size: 6.1 KiB |
Binary file not shown.
Before Width: | Height: | Size: 4.5 KiB |
Binary file not shown.
Before Width: | Height: | Size: 8.7 KiB |
Binary file not shown.
Before Width: | Height: | Size: 7.4 KiB |
@ -1,14 +1,28 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-upload v-if="type === 'url'" :action="upload.url" :before-upload="handleBeforeUpload"
|
||||
:on-success="handleUploadSuccess" :on-error="handleUploadError" class="editor-img-uploader" name="file"
|
||||
:show-file-list="false" :headers="upload.headers">
|
||||
<el-upload
|
||||
v-if="type === 'url'"
|
||||
:action="upload.url"
|
||||
:before-upload="handleBeforeUpload"
|
||||
:on-success="handleUploadSuccess"
|
||||
:on-error="handleUploadError"
|
||||
class="editor-img-uploader"
|
||||
name="file"
|
||||
:show-file-list="false"
|
||||
:headers="upload.headers"
|
||||
>
|
||||
<i ref="uploadRef"></i>
|
||||
</el-upload>
|
||||
</div>
|
||||
<div class="editor">
|
||||
<quill-editor ref="quillEditorRef" v-model:content="content" content-type="html" :options="options" :style="styles"
|
||||
@text-change="(e: any) => $emit('update:modelValue', content)" />
|
||||
<quill-editor
|
||||
ref="quillEditorRef"
|
||||
v-model:content="content"
|
||||
content-type="html"
|
||||
:options="options"
|
||||
:style="styles"
|
||||
@text-change="(e: any) => $emit('update:modelValue', content)"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@ -88,7 +102,6 @@ const styles = computed(() => {
|
||||
if (props.height) {
|
||||
style.height = `${props.height}px`;
|
||||
}
|
||||
style.width = '1000px';
|
||||
return style;
|
||||
});
|
||||
|
||||
@ -153,96 +166,77 @@ const handleUploadError = (err: any) => {
|
||||
.editor-img-uploader {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.editor,
|
||||
.ql-toolbar {
|
||||
white-space: pre-wrap !important;
|
||||
line-height: normal !important;
|
||||
}
|
||||
|
||||
.quill-img {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.ql-snow .ql-tooltip[data-mode='link']::before {
|
||||
content: '请输入链接地址:';
|
||||
}
|
||||
|
||||
.ql-snow .ql-tooltip.ql-editing a.ql-action::after {
|
||||
border-right: 0;
|
||||
content: '保存';
|
||||
padding-right: 0;
|
||||
}
|
||||
|
||||
.ql-snow .ql-tooltip[data-mode='video']::before {
|
||||
content: '请输入视频地址:';
|
||||
}
|
||||
|
||||
.ql-snow .ql-picker.ql-size .ql-picker-label::before,
|
||||
.ql-snow .ql-picker.ql-size .ql-picker-item::before {
|
||||
content: '14px';
|
||||
}
|
||||
|
||||
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value='small']::before,
|
||||
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value='small']::before {
|
||||
content: '10px';
|
||||
}
|
||||
|
||||
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value='large']::before,
|
||||
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value='large']::before {
|
||||
content: '18px';
|
||||
}
|
||||
|
||||
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value='huge']::before,
|
||||
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value='huge']::before {
|
||||
content: '32px';
|
||||
}
|
||||
|
||||
.ql-snow .ql-picker.ql-header .ql-picker-label::before,
|
||||
.ql-snow .ql-picker.ql-header .ql-picker-item::before {
|
||||
content: '文本';
|
||||
}
|
||||
|
||||
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value='1']::before,
|
||||
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value='1']::before {
|
||||
content: '标题1';
|
||||
}
|
||||
|
||||
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value='2']::before,
|
||||
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value='2']::before {
|
||||
content: '标题2';
|
||||
}
|
||||
|
||||
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value='3']::before,
|
||||
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value='3']::before {
|
||||
content: '标题3';
|
||||
}
|
||||
|
||||
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value='4']::before,
|
||||
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value='4']::before {
|
||||
content: '标题4';
|
||||
}
|
||||
|
||||
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value='5']::before,
|
||||
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value='5']::before {
|
||||
content: '标题5';
|
||||
}
|
||||
|
||||
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value='6']::before,
|
||||
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value='6']::before {
|
||||
content: '标题6';
|
||||
}
|
||||
|
||||
.ql-snow .ql-picker.ql-font .ql-picker-label::before,
|
||||
.ql-snow .ql-picker.ql-font .ql-picker-item::before {
|
||||
content: '标准字体';
|
||||
}
|
||||
|
||||
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value='serif']::before,
|
||||
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value='serif']::before {
|
||||
content: '衬线字体';
|
||||
}
|
||||
|
||||
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value='monospace']::before,
|
||||
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value='monospace']::before {
|
||||
content: '等宽字体';
|
||||
|
@ -33,7 +33,6 @@
|
||||
import { Search } from '@element-plus/icons-vue';
|
||||
import { propTypes } from '@/utils/propTypes';
|
||||
import { jsonp } from 'vue-jsonp';
|
||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||
import { debounce } from '@/utils/debounce.js';
|
||||
import { OssVO } from '@/api/system/oss/types';
|
||||
import { listByIds } from '@/api/system/oss';
|
||||
@ -94,7 +93,8 @@ const onClick = (e: any) => {
|
||||
// form.value.city = data.result.address_component.city;
|
||||
// form.value.region = data.result.ad_info.adcode; //行政区划编码
|
||||
form.value.regionCode = data.result.ad_info.adcode; //行政区划编码
|
||||
center.value = { lat: data.result.location.lat, lng: data.result.location.lng };
|
||||
center.value.lat = data.result.location.lat;
|
||||
center.value.lng = data.result.location.lng;
|
||||
searchLocation.value = data.result.formatted_addresses.recommend;
|
||||
geometries.value = [{ styleId: 'marker', position: { lat: data.result.location.lat, lng: data.result.location.lng } }];
|
||||
console.log(form.value);
|
||||
@ -119,6 +119,8 @@ const performSearch = async (text) => {
|
||||
jsonp(`https://apis.map.qq.com/ws/geocoder/v1/?address=${text}&key=${'6XFBZ-SAVLT-JGIX2-VOLMK-6S2H3-XUBGO'}&output=jsonp`, {}).then((data) => {
|
||||
console.log(data);
|
||||
if (data.status == 0) {
|
||||
center.value.lat = data.result.location.lat;
|
||||
center.value.lng = data.result.location.lng;
|
||||
// form.value.address =
|
||||
// data.result.address_components.province +
|
||||
// data.result.address_components.city +
|
||||
@ -130,9 +132,8 @@ const performSearch = async (text) => {
|
||||
// form.value.region = data.result.ad_info.adcode; //行政区划编码
|
||||
// form.value.regionCode = data.result.ad_info.adcode; //行政区划编码
|
||||
|
||||
form.value.address = text;
|
||||
form.value.address = data.result.formatted_addresses.recommend;
|
||||
// form.value.city = data.result.address_components.city;
|
||||
center.value = { lat: data.result.location.lat, lng: data.result.location.lng };
|
||||
geometries.value = [{ styleId: 'marker', position: { lat: data.result.location.lat, lng: data.result.location.lng } }];
|
||||
console.log(form.value);
|
||||
emit('modelValue', form.value);
|
||||
|
@ -1,142 +0,0 @@
|
||||
<template>
|
||||
<div class="note">
|
||||
<div class="content">
|
||||
<img src="" />
|
||||
<div class="title">{{ form.activityName }}</div>
|
||||
<div class="description">
|
||||
<div><img src="../../assets/images/num.png" />活动人数:{{ form.activityUserCount }}人</div>
|
||||
<div><img src="../../assets/images/time.png" />活动时间:{{ form.activityTime }}</div>
|
||||
<div><img src="../../assets/images/laba.png" />报名截至:{{ form.registrationDeadline }}</div>
|
||||
<div><img src="../../assets/images/moeny.png" />活动费用:{{ form.paymentMethod == 1 ? '发起人收款' : '免费' }}</div>
|
||||
<div><img src="../../assets/images/address.png" />活动地址:{{ form.activityLocation }}</div>
|
||||
</div>
|
||||
<div>
|
||||
<div style="font-size: 14px;font-weight: 600;line-height:30px">活动介绍</div>
|
||||
<div>{{ form.activityDescription }}</div>
|
||||
</div>
|
||||
<div>
|
||||
<div style="font-size: 14px;font-weight: 600;line-height:30px">活动流程</div>
|
||||
<div v-for="(item, index) in listdatatime">
|
||||
<div style="display: flex; align-items: center">
|
||||
<div style="width: 10px; height: 10px; background-color: #000; border-radius: 50%"></div>
|
||||
<div>{{ item.activityTime }} </div>
|
||||
<div>{{ item.planContent }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { string } from 'vue-types';
|
||||
import { contentall, tagall } from '@/api/manage/notebook';
|
||||
import { hotelall } from '@/api/manage/route';
|
||||
const sys_user_tagOptions = ref([]); //标签库
|
||||
const sys_user_contentOptions = ref([]); //标签库
|
||||
const props = defineProps({
|
||||
form: {
|
||||
type: [String, Object, Array],
|
||||
default: () => {}
|
||||
},
|
||||
listdatatime: {
|
||||
type: [String, Object, Array],
|
||||
default: () => {}
|
||||
}
|
||||
});
|
||||
const form = ref(props.form);
|
||||
const listdatatime = ref(props.listdatatime);
|
||||
const getContent = async () => {
|
||||
const res = await contentall({ status: 2 });
|
||||
const arr = await hotelall({ status: 1 });
|
||||
sys_user_contentOptions.value = res.concat(arr); //地点
|
||||
};
|
||||
const getTag = async () => {
|
||||
const res = await tagall();
|
||||
sys_user_tagOptions.value = res; //标签库
|
||||
};
|
||||
/**
|
||||
* 标签格式化
|
||||
*/
|
||||
const formatTag = (tagId: string | null) => {
|
||||
let tagString = '';
|
||||
// for (let i = 0; i < sys_user_tagOptions.value.length; i++) {
|
||||
// const element = sys_user_tagOptions.value[i];
|
||||
// if (tagId?.includes(element.id)) {
|
||||
// tagString += ',' + element.title;
|
||||
// }
|
||||
// }
|
||||
for (let i = 0; i < sys_user_tagOptions.value.length; i++) {
|
||||
const element = sys_user_tagOptions.value[i];
|
||||
if (tagId != null) {
|
||||
let filteredArray = tagId.split(',').filter((item) => item == element.id);
|
||||
if (filteredArray.length > 0) {
|
||||
tagString += '#' + element.title;
|
||||
}
|
||||
}
|
||||
}
|
||||
return tagString;
|
||||
};
|
||||
/**
|
||||
* 标记地点格式化
|
||||
*/
|
||||
const formatlocation = (tagId: string | null) => {
|
||||
let tagString = '';
|
||||
let arrlist = tagId?.split(',').map(Number);
|
||||
for (let i = 0; i < sys_user_contentOptions.value.length; i++) {
|
||||
const element = sys_user_contentOptions.value[i];
|
||||
for (let j = 0; j < arrlist.length; j++) {
|
||||
const conten = arrlist[j];
|
||||
if (conten == element.id) {
|
||||
tagString += ',' + element.name;
|
||||
}
|
||||
}
|
||||
}
|
||||
return tagString.substring(1);
|
||||
};
|
||||
onMounted(() => {
|
||||
getTag(); //标签库
|
||||
getContent();
|
||||
});
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.note {
|
||||
margin: 0 auto;
|
||||
width: 350px;
|
||||
height: 700px;
|
||||
background: url('../../assets/images/bgm.png') no-repeat;
|
||||
background-size: 100% 100%;
|
||||
padding-top: 70px;
|
||||
.content {
|
||||
width: 88%;
|
||||
height: 580px;
|
||||
overflow-y: auto;
|
||||
margin: 0 auto;
|
||||
.title {
|
||||
width: 95%;
|
||||
font-weight: 600;
|
||||
padding-top: 300px;
|
||||
margin: 0 auto;
|
||||
font-size: 16px;
|
||||
}
|
||||
.description {
|
||||
margin-top: 15px;
|
||||
border-radius: 20px;
|
||||
padding: 10px;
|
||||
line-height: 30px;
|
||||
background-color: #f3efe8;
|
||||
img {
|
||||
width: 15px;
|
||||
height: 15px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.content::-webkit-scrollbar {
|
||||
display: none;
|
||||
}
|
||||
.content::-webkit-scrollbar {
|
||||
width: 0px;
|
||||
}
|
||||
</style>
|
@ -10,8 +10,8 @@
|
||||
<div style="margin-right: 5px;">
|
||||
{{ comment.nickName }}
|
||||
</div>
|
||||
<!-- <div v-if="comment.parentId" class="reply-to"></div>
|
||||
<div v-if="comment.parentId" class="reply-to-username">{{ comment.replyNickName }}</div> -->
|
||||
<div v-if="comment.parentId" class="reply-to"></div>
|
||||
<div v-if="comment.parentId" class="reply-to-username">{{ comment.replyNickName }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="user-details">
|
||||
@ -21,26 +21,21 @@
|
||||
<span class="ip-address">IP: {{ comment.address?comment.address:'未知' }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="comment.daList && comment.daList.length" class="replies">
|
||||
<div v-for="reply in comment.daList" :key="reply.id" class="reply-item">
|
||||
<!-- <div v-if="comment.replies && comment.replies.length" class="replies">
|
||||
<div v-for="reply in comment.replies" :key="reply.id" class="reply-item">
|
||||
<div class="user-info">
|
||||
<!-- <img :src="reply.avatar" alt="" class="avatar"> -->
|
||||
<image-preview :src="reply.avatar" :width="25" :height="25" />
|
||||
<div class="">
|
||||
<div class="username">
|
||||
<span>{{ reply.nickName }}</span>
|
||||
<div class="reply-to"></div>
|
||||
<span>{{ reply.replyNickName }}</span>
|
||||
</div>
|
||||
<div class="comment-content" style="margin-left: 10px;">{{ reply.content }}</div>
|
||||
<div class="comment-info" style="margin-left: 10px;">
|
||||
<span class="comment-time">{{ reply.createTime }}</span>
|
||||
<span class="ip-address">IP: {{ reply.address?reply.address:'未知' }}</span>
|
||||
<img :src="reply.avatar" alt="回复用户昵称" class="avatar">
|
||||
<div class="user-details">
|
||||
<div class="username">回复 {{ reply.username }}</div>
|
||||
<div class="comment-content">{{ reply.content }}</div>
|
||||
<div class="comment-info">
|
||||
<span class="comment-time">{{ reply.time }}</span>
|
||||
<span class="ip-address">IP: {{ reply.ipAddress }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div> -->
|
||||
</div>
|
||||
</div>
|
||||
<pagination v-show="total > 0" id="table_page" :total="total" v-model:page="queryParams.pageNum"
|
||||
@ -118,15 +113,13 @@ const getCommentList = async () => {
|
||||
.reply-to {
|
||||
width: 0;
|
||||
height: 0;
|
||||
margin-top: 5px;
|
||||
border-top: 6px solid transparent;
|
||||
/* 上边框透明 */
|
||||
border-bottom: 6px solid transparent;
|
||||
/* 下边框透明 */
|
||||
border-left: 6px solid #999;
|
||||
/* 左边框为箭头颜色,这里设为黑色,可按需更改 */
|
||||
|
||||
margin: 0px 8px;
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
.reply-to-username {
|
||||
@ -137,12 +130,12 @@ const getCommentList = async () => {
|
||||
|
||||
.user-details {
|
||||
margin-left: 35px;
|
||||
}
|
||||
|
||||
.comment-content {
|
||||
color: #000;
|
||||
font-size: 16px;
|
||||
padding: 3px 0px;
|
||||
.comment-content {
|
||||
color: #000;
|
||||
font-size: 16px;
|
||||
padding: 3px 0px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -152,15 +145,6 @@ const getCommentList = async () => {
|
||||
margin-left: 15px;
|
||||
}
|
||||
|
||||
.replies {
|
||||
margin-left: 35px;
|
||||
|
||||
.reply-item {
|
||||
margin-top: 5px;
|
||||
padding: 5px 0px;
|
||||
}
|
||||
}
|
||||
|
||||
#table_page {
|
||||
height: 50px !important;
|
||||
margin-top: 10px !important;
|
||||
|
@ -1,119 +0,0 @@
|
||||
<template>
|
||||
<div class="note">
|
||||
<div class="content">
|
||||
<img src="" />
|
||||
<div class="title">{{ form.title }}</div>
|
||||
<div v-html="form.content"></div>
|
||||
<div class="tagid">{{ formatTag(form.tagId) }}</div>
|
||||
<div class="address" v-if="form.location">
|
||||
<img src="../../assets/images/address.png" />
|
||||
{{ formatlocation(form.location) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { string } from 'vue-types';
|
||||
import { contentall, tagall } from '@/api/manage/notebook';
|
||||
import { hotelall } from '@/api/manage/route';
|
||||
const sys_user_tagOptions = ref([]); //标签库
|
||||
const sys_user_contentOptions = ref([]); //标签库
|
||||
const props = defineProps({
|
||||
form: {
|
||||
type: [String, Object, Array],
|
||||
default: () => {}
|
||||
}
|
||||
});
|
||||
const form = ref(props.form);
|
||||
const getContent = async () => {
|
||||
const res = await contentall({ status: 2 });
|
||||
const arr = await hotelall({ status: 1 });
|
||||
sys_user_contentOptions.value = res.concat(arr); //地点
|
||||
};
|
||||
const getTag = async () => {
|
||||
const res = await tagall();
|
||||
sys_user_tagOptions.value = res; //标签库
|
||||
};
|
||||
/**
|
||||
* 标签格式化
|
||||
*/
|
||||
const formatTag = (tagId: string | null) => {
|
||||
let tagString = '';
|
||||
// for (let i = 0; i < sys_user_tagOptions.value.length; i++) {
|
||||
// const element = sys_user_tagOptions.value[i];
|
||||
// if (tagId?.includes(element.id)) {
|
||||
// tagString += ',' + element.title;
|
||||
// }
|
||||
// }
|
||||
for (let i = 0; i < sys_user_tagOptions.value.length; i++) {
|
||||
const element = sys_user_tagOptions.value[i];
|
||||
if (tagId != null) {
|
||||
let filteredArray = tagId.split(',').filter((item) => item == element.id);
|
||||
if (filteredArray.length > 0) {
|
||||
tagString += '#' + element.title;
|
||||
}
|
||||
}
|
||||
}
|
||||
return tagString;
|
||||
};
|
||||
/**
|
||||
* 标记地点格式化
|
||||
*/
|
||||
const formatlocation = (tagId: string | null) => {
|
||||
let tagString = '';
|
||||
let arrlist = tagId?.split(',').map(Number);
|
||||
for (let i = 0; i < sys_user_contentOptions.value.length; i++) {
|
||||
const element = sys_user_contentOptions.value[i];
|
||||
for (let j = 0; j < arrlist.length; j++) {
|
||||
const conten = arrlist[j];
|
||||
if (conten == element.id) {
|
||||
tagString += ',' + element.name;
|
||||
}
|
||||
}
|
||||
}
|
||||
return tagString.substring(1);
|
||||
};
|
||||
onMounted(() => {
|
||||
getTag(); //标签库
|
||||
getContent();
|
||||
});
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.note {
|
||||
margin: 0 auto;
|
||||
width: 350px;
|
||||
height: 700px;
|
||||
background: url('../../assets/images/bgm.png') no-repeat;
|
||||
background-size: 100% 100%;
|
||||
padding-top: 70px;
|
||||
.content {
|
||||
width: 88%;
|
||||
height: 580px;
|
||||
overflow-y: auto;
|
||||
margin: 0 auto;
|
||||
.title {
|
||||
font-weight: 600;
|
||||
padding-top: 300px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
.tagid {
|
||||
color: #1c84c6;
|
||||
}
|
||||
.address {
|
||||
line-height: 40px;
|
||||
color: #2b2f3a;
|
||||
img {
|
||||
width: 15px;
|
||||
height: 15px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.content::-webkit-scrollbar {
|
||||
display: none;
|
||||
}
|
||||
.content::-webkit-scrollbar {
|
||||
width: 0px;
|
||||
}
|
||||
</style>
|
@ -3,15 +3,12 @@
|
||||
<div>
|
||||
<el-table :height="props.autoTableHeight" v-loading="loading" :data="props.articleList"
|
||||
@selection-change="handleSelectionChange" border>
|
||||
<!-- <el-table-column type="selection" width="55" align="center" v-if="props.parentName != 'dyUser'" /> -->
|
||||
<el-table-column type="selection" width="55" align="center" v-if="props.parentName != 'dyUser'" />
|
||||
<!-- <el-table-column label="ID" align="center" prop="id" v-if="props.parentName != 'dyUser'" /> -->
|
||||
<el-table-column label="笔记标题" align="center" prop="title" width="180px" />
|
||||
<el-table-column label="笔记封面" align="center" prop="" width="80px" />
|
||||
<el-table-column label="标记地点" align="center" prop="location">
|
||||
<template #default="scope">
|
||||
<span>{{ formatlocation(scope.row.location) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="笔记类别" align="center" prop="" width="80px" />
|
||||
<el-table-column label="标记地点" align="center" prop="location" width="180px" />
|
||||
<el-table-column label="标签" align="center" prop="">
|
||||
<template #default="scope">
|
||||
<span>{{ formatTag(scope.row.tagId.toString()) }}</span>
|
||||
@ -28,16 +25,16 @@
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="点赞数" align="center" prop="agreeCount" width="80px">
|
||||
<!-- <template #default="scope">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" @click="handleComment(scope.row)">12</el-button>
|
||||
</template> -->
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="发布状态" align="center" prop="">
|
||||
<template #default="scope">
|
||||
<span>{{ scope.row.status == 0 ? '未发布' : scope.row.status == 1 ? '审核中' : scope.row.status == 2 ? '已发布' : '草稿' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column label="操作人" align="center" prop="updateByName" /> -->
|
||||
<el-table-column label="操作人" align="center" prop="updateByName" />
|
||||
<el-table-column label="操作时间" align="center" prop="updateTime" width="180px" />
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"
|
||||
v-if="props.parentName != 'dyUser' && props.parentName != 'scenic'">
|
||||
@ -57,6 +54,8 @@
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<pagination v-show="total > 0" id="table_page" :total="total" v-model:page="queryParams.pageNum"
|
||||
v-model:limit="queryParams.pageSize" @pagination="getTableList" />
|
||||
<!-- 笔记详情弹层 -->
|
||||
<el-dialog title="笔记详情" v-model="noteDetail.visible" width="500px" append-to-body>
|
||||
<div>
|
||||
@ -89,9 +88,6 @@
|
||||
import { ref, reactive, onMounted, nextTick } from 'vue';
|
||||
import { string } from 'vue-types';
|
||||
import { listByTagIdNotebook } from '@/api/manage/scenic';
|
||||
import { tagall,contentall } from '@/api/manage/notebook';
|
||||
import { hotelall } from '@/api/manage/route';
|
||||
|
||||
|
||||
//导入父组件传递的值
|
||||
const props = defineProps({
|
||||
@ -111,10 +107,10 @@ const props = defineProps({
|
||||
type: String,
|
||||
default: () => ''
|
||||
},
|
||||
// sys_user_tagOptions: {
|
||||
// type: Array,
|
||||
// default: () => []
|
||||
// }
|
||||
sys_user_tagOptions: {
|
||||
type: Array,
|
||||
default: () => []
|
||||
}
|
||||
});
|
||||
const total = ref(0);
|
||||
const loading = ref(false);
|
||||
@ -157,16 +153,14 @@ const handleComment = async (row: any) => {
|
||||
}
|
||||
// 监听父组件传递的tagIds,当tagIds发生变化时,重新获取数据
|
||||
watch(
|
||||
() => props.articleList,
|
||||
() => props.noteBookTagIds,
|
||||
(newVal, oldVal) => {
|
||||
console.log(newVal);
|
||||
queryParams.tagIds = newVal;
|
||||
if (newVal) {
|
||||
//获取数据
|
||||
nextTick(() => {
|
||||
// getTableList();
|
||||
getTag();
|
||||
getContent();
|
||||
getTableList();
|
||||
});
|
||||
}
|
||||
},
|
||||
@ -192,8 +186,14 @@ const handleDelete = (row: any) => {
|
||||
*/
|
||||
const formatTag = (tagId: string | null) => {
|
||||
let tagString = '';
|
||||
for (let i = 0; i < sys_user_tagOptions.value.length; i++) {
|
||||
const element:any = sys_user_tagOptions.value[i];
|
||||
// for (let i = 0; i < props.sys_user_tagOptions.length; i++) {
|
||||
// const element:any = props.sys_user_tagOptions[i];
|
||||
// if (tagId?.includes(element.id)) {
|
||||
// tagString += ',' + element.title;
|
||||
// }
|
||||
// }
|
||||
for (let i = 0; i < props.sys_user_tagOptions.length; i++) {
|
||||
const element:any = props.sys_user_tagOptions[i];
|
||||
if (tagId!=null) {
|
||||
let filteredArray = tagId.split(',').filter((item) => item==element.id);
|
||||
if (filteredArray.length>0) {
|
||||
@ -203,36 +203,6 @@ const formatTag = (tagId: string | null) => {
|
||||
}
|
||||
return tagString.substring(1);
|
||||
};
|
||||
const sys_user_contentOptions = ref([]); //标签库
|
||||
// 获取地点
|
||||
const getContent = async () => {
|
||||
const res = await contentall({ status: 2 });
|
||||
const arr = await hotelall({ status: 1 });
|
||||
sys_user_contentOptions.value = res.concat(arr); //地点
|
||||
};
|
||||
// 获取标签
|
||||
const sys_user_tagOptions=ref([]);//
|
||||
const getTag = async () => {
|
||||
const res = await tagall();
|
||||
Object.assign(sys_user_tagOptions.value,res);
|
||||
};
|
||||
/**
|
||||
* 标记地点格式化
|
||||
*/
|
||||
const formatlocation = (tagId: string | null) => {
|
||||
let tagString = '';
|
||||
let arrlist = tagId?.split(',').map(Number);
|
||||
for (let i = 0; i < sys_user_contentOptions.value.length; i++) {
|
||||
const element = sys_user_contentOptions.value[i];
|
||||
for (let j = 0; j < arrlist.length; j++) {
|
||||
const conten = arrlist[j];
|
||||
if (conten == element.id) {
|
||||
tagString += ',' + element.name;
|
||||
}
|
||||
}
|
||||
}
|
||||
return tagString.substring(1);
|
||||
};
|
||||
// 导入父组件定义的函数
|
||||
const emit = defineEmits(['hideDialog', 'handleUpdate', 'handleDelete']);
|
||||
</script>
|
||||
|
@ -14,11 +14,7 @@
|
||||
</el-table-column>
|
||||
<!-- <el-table-column label="排序" align="center" prop="" /> -->
|
||||
<el-table-column label="活动人数" align="center" prop="activityUserCount" />
|
||||
<el-table-column label="报名人数" align="center" prop="registrationCount">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" @click="baominglist(scope.row)">{{ scope.row.registrationCount }}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="报名人数" align="center" prop="registrationCount" />
|
||||
<el-table-column label="活动流程" align="center" prop="" width="100px">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" @click="chakanhandle(scope.row)">查看详情</el-button>
|
||||
@ -55,44 +51,12 @@
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!-- 报名人数弹窗-->
|
||||
<el-dialog v-model="numdialog.visible" title="报名人数" width="60%" append-to-body>
|
||||
<el-table v-loading="loading" :height="500" border :data="numdialog.activityUsersList">
|
||||
<el-table-column v-if="true" label="序号" align="center" prop="id" fixed width="80px" />
|
||||
<el-table-column label="昵称" align="center" fixed prop="nickname" width="180px" />
|
||||
<el-table-column label="头像" align="center" fixed prop="avatar" width="80px" />
|
||||
<el-table-column label="性别" align="center" prop="sex">
|
||||
<template #default="scope">
|
||||
<dict-tag :options="sys_user_sex" :value="scope.row.sex" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="报名宣言" align="center" prop="declaration" show-overflow-tooltip />
|
||||
<el-table-column label="介绍照片" align="center" prop="introducePhoto" />
|
||||
<el-table-column label="微信号" align="center" prop="wechat" />
|
||||
|
||||
<el-table-column label="报名时间" align="center" prop="createTime" width="180px" />
|
||||
<el-table-column label="报名结果" align="center" prop="status" width="180px">
|
||||
<template #default="scope">
|
||||
<el-tag v-if="scope.row.status == 1" type="info">通过</el-tag>
|
||||
<el-tag v-if="scope.row.status == 0" type="primary">待挑选</el-tag>
|
||||
<!-- <el-tag v-if="scope.row.status == 3" type="primary">拒绝</el-tag>-->
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<pagination v-show="numdialog.total > 0" id="table_page" v-model:page="numdialog.params.pageNum"
|
||||
v-model:limit="numdialog.params.pageSize" :total="numdialog.total" @pagination="baominglist" />
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button @click="cancel">关 闭</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts" name="partyList">
|
||||
import { ref, reactive, onMounted, nextTick } from 'vue';
|
||||
import {activityUsersList} from '@/api/manage/activity';
|
||||
|
||||
//导入父组件传递的值
|
||||
const props = defineProps({
|
||||
partyList: {
|
||||
@ -125,34 +89,6 @@ const handleUpdate = async (row?: any) => {
|
||||
const handleDelete = (row: any) => {
|
||||
emit('handleDelete', row);
|
||||
};
|
||||
const cancel = () => {
|
||||
numdialog.visible = false;
|
||||
numdialog.params.pageNum = 1;
|
||||
numdialog.params.activityId = undefined;
|
||||
}
|
||||
// 报名人数弹窗
|
||||
const numdialog = reactive({
|
||||
visible: false,
|
||||
type:'',
|
||||
title:'',
|
||||
total:0,
|
||||
activityUsersList:[],
|
||||
params:{
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
activityId: undefined
|
||||
}
|
||||
});
|
||||
// 查看报名人数
|
||||
const baominglist = async (row:any) => {
|
||||
if (row.id) {
|
||||
numdialog.params.activityId = row.id;
|
||||
}
|
||||
const res = await activityUsersList(numdialog.params);
|
||||
numdialog.activityUsersList = res.rows;
|
||||
numdialog.total = res.total;
|
||||
numdialog.visible = true;
|
||||
};
|
||||
// 导入父组件定义的函数
|
||||
const emit = defineEmits(['hideDialog', 'handleUpdate', 'handleDelete']);
|
||||
</script>
|
||||
|
@ -1,6 +1,82 @@
|
||||
<template>
|
||||
<div class="app-container home">
|
||||
<el-row :gutter="20">
|
||||
<el-col :sm="24" :lg="12" style="padding-left: 20px">
|
||||
<h2>岛游后台管理系统</h2>
|
||||
<p>
|
||||
岛游后台管理系统 是基于 RuoYi-Vue 针对 分布式集群 场景升级(不兼容原框架)
|
||||
<br />
|
||||
* 前端开发框架 Vue3、TS、Element Plus<br />
|
||||
* 后端开发框架 Spring Boot<br />
|
||||
* 容器框架 Undertow 基于 Netty 的高性能容器<br />
|
||||
* 权限认证框架 Sa-Token 支持多终端认证系统<br />
|
||||
* 关系数据库 MySQL 适配 8.X 最低 5.7<br />
|
||||
* 缓存数据库 Redis 适配 6.X 最低 4.X<br />
|
||||
* 数据库框架 Mybatis-Plus 快速 CRUD 增加开发效率<br />
|
||||
* 数据库框架 p6spy 更强劲的 SQL 分析<br />
|
||||
* 多数据源框架 dynamic-datasource 支持主从与多种类数据库异构<br />
|
||||
* 序列化框架 Jackson 统一使用 jackson 高效可靠<br />
|
||||
* Redis客户端 Redisson 性能强劲、API丰富<br />
|
||||
* 分布式限流 Redisson 全局、请求IP、集群ID 多种限流<br />
|
||||
* 分布式锁 Lock4j 注解锁、工具锁 多种多样<br />
|
||||
* 分布式幂等 Lock4j 基于分布式锁实现<br />
|
||||
* 分布式链路追踪 SkyWalking 支持链路追踪、网格分析、度量聚合、可视化<br />
|
||||
* 分布式任务调度 SnailJob 高性能 高可靠 易扩展<br />
|
||||
* 文件存储 Minio 本地存储<br />
|
||||
* 文件存储 七牛、阿里、腾讯 云存储<br />
|
||||
* 监控框架 SpringBoot-Admin 全方位服务监控<br />
|
||||
* 校验框架 Validation 增强接口安全性 严谨性<br />
|
||||
* Excel框架 Alibaba EasyExcel 性能优异 扩展性强<br />
|
||||
* 文档框架 SpringDoc、javadoc 无注解零入侵基于java注释<br />
|
||||
* 工具类框架 Hutool、Lombok 减少代码冗余 增加安全性<br />
|
||||
* 代码生成器 适配MP、SpringDoc规范化代码 一键生成前后端代码<br />
|
||||
* 部署方式 Docker 容器编排 一键部署业务集群<br />
|
||||
* 国际化 SpringMessage Spring标准国际化方案<br />
|
||||
</p>
|
||||
<p><b>当前版本:</b> <span>v5.2.3</span></p>
|
||||
<p>
|
||||
<el-tag type="danger">¥免费开源</el-tag>
|
||||
</p>
|
||||
</el-col>
|
||||
|
||||
<el-col :sm="24" :lg="12" style="padding-left: 20px">
|
||||
<h2>RuoYi-Cloud-Plus多租户微服务管理系统</h2>
|
||||
<p>
|
||||
RuoYi-Cloud-Plus 微服务通用权限管理系统 重写 RuoYi-Cloud 全方位升级(不兼容原框架)
|
||||
<br />
|
||||
* 前端开发框架 Vue3、TS、Element UI<br />
|
||||
* 后端开发框架 Spring Boot<br />
|
||||
* 微服务开发框架 Spring Cloud、Spring Cloud Alibaba<br />
|
||||
* 容器框架 Undertow 基于 XNIO 的高性能容器<br />
|
||||
* 权限认证框架 Sa-Token、Jwt 支持多终端认证系统<br />
|
||||
* 关系数据库 MySQL 适配 8.X 最低 5.7<br />
|
||||
* 关系数据库 Oracle 适配 11g 12c<br />
|
||||
* 关系数据库 PostgreSQL 适配 13 14<br />
|
||||
* 关系数据库 SQLServer 适配 2017 2019<br />
|
||||
* 缓存数据库 Redis 适配 6.X 最低 5.X<br />
|
||||
* 分布式注册中心 Alibaba Nacos 采用2.X 基于GRPC通信高性能<br />
|
||||
* 分布式配置中心 Alibaba Nacos 采用2.X 基于GRPC通信高性能<br />
|
||||
* 服务网关 Spring Cloud Gateway 响应式高性能网关<br />
|
||||
* 负载均衡 Spring Cloud Loadbalancer 负载均衡处理<br />
|
||||
* RPC远程调用 Apache Dubbo 原生态使用体验、高性能<br />
|
||||
* 分布式限流熔断 Alibaba Sentinel 无侵入、高扩展<br />
|
||||
* 分布式事务 Alibaba Seata 无侵入、高扩展 支持 四种模式<br />
|
||||
* 分布式消息队列 Apache Kafka 高性能高速度<br />
|
||||
* 分布式消息队列 Apache RocketMQ 高可用功能多样<br />
|
||||
* 分布式消息队列 RabbitMQ 支持各种扩展插件功能多样性<br />
|
||||
* 分布式搜索引擎 ElasticSearch 业界知名<br />
|
||||
* 分布式链路追踪 Apache SkyWalking 链路追踪、网格分析、度量聚合、可视化<br />
|
||||
* 分布式日志中心 ELK 业界成熟解决方案<br />
|
||||
* 分布式监控 Prometheus、Grafana 全方位性能监控<br />
|
||||
* 其余与 Vue 版本一致<br />
|
||||
</p>
|
||||
<p><b>当前版本:</b> <span>v2.2.2</span></p>
|
||||
<p>
|
||||
<el-tag type="danger">¥免费开源</el-tag>
|
||||
</p>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-divider />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
@ -36,13 +36,9 @@
|
||||
|
||||
<el-table v-loading="loading" :height="autoTableHeight" :data="activityList" border @selection-change="handleSelectionChange">
|
||||
<!-- <el-table-column type="selection" width="55" align="center" />-->
|
||||
<el-table-column fixed label="序号" align="center" width="80">
|
||||
<template #default="scope">
|
||||
<span>{{ (queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1 }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="true" label="ID" align="center" prop="id" fixed width="180px" />
|
||||
<el-table-column label="活动名称" align="center" fixed prop="activityName" width="180px" />
|
||||
<el-table-column label="活动描述" align="center" prop="activityDescription" width="180px" show-overflow-tooltip />
|
||||
<el-table-column label="活动描述" align="center" fixed prop="activityDescription" width="180px" show-overflow-tooltip />
|
||||
<el-table-column label="活动图片" align="center" prop="" />
|
||||
<el-table-column label="活动人数" align="center" prop="activityUserCount" />
|
||||
<el-table-column label="报名人数" align="center" prop="registrationCount">
|
||||
@ -82,7 +78,9 @@
|
||||
<el-tag v-if="scope.row.status == 3" type="primary">已发布</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="发布时间" align="center" prop="publishTime" />
|
||||
<el-table-column label="发布人员" align="center" prop="publishName" />
|
||||
<el-table-column label="操作人员" align="center" prop="updateName" />
|
||||
<el-table-column label="操作时间" align="center" prop="updateTime" width="180px" />
|
||||
<el-table-column label="操作" align="center" width="150px" fixed="right" class-name="small-padding fixed-width">
|
||||
<template #default="scope">
|
||||
@ -206,8 +204,57 @@
|
||||
</el-dialog>
|
||||
<!-- 查看活动流程 -->
|
||||
<el-dialog v-model="seedialog.visible" :title="seedialog.title" width="60%" append-to-body>
|
||||
<activitylink :form="form" :listdatatime="listdatatime"></activitylink>
|
||||
|
||||
<el-form ref="activityFormRef" :model="form" :rules="rules" label-width="120px">
|
||||
<el-form-item label="活动名称">
|
||||
<div>{{ form.activityName }}</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="活动描述">
|
||||
<div>{{ form.activityDescription }}</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="活动人数">
|
||||
<div>{{ form.activityUserCount }}人</div>
|
||||
</el-form-item>
|
||||
<div style="display: flex">
|
||||
<el-form-item label="活动时间">
|
||||
<div>{{ form.activityTime }}</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="报名截至时间">
|
||||
<div>{{ form.registrationDeadline }}</div>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div style="display: flex">
|
||||
<el-form-item label="发布者地址">
|
||||
<div>{{ form.publisherAddress }}</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="活动地点">
|
||||
<div>{{ form.activityLocation }}</div>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<el-form-item label="收费方式">
|
||||
<el-radio-group v-model="form.paymentMethod" disabled>
|
||||
<el-radio :value="1">发起人收款</el-radio>
|
||||
<el-radio :value="0">免费</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="挑选玩友">
|
||||
<el-radio-group v-model="form.isSelected" disabled>
|
||||
<el-radio :value="1">挑选</el-radio>
|
||||
<el-radio :value="0">不挑选</el-radio>
|
||||
</el-radio-group>
|
||||
<span style="margin-left: 30px; font-size: 12px; color: #707070">勾选后,发起人需要逐个审核报名者,确认是否通过报名</span>
|
||||
</el-form-item>
|
||||
<el-form-item label="活动流程"> </el-form-item>
|
||||
<div v-for="(item, index) in listdatatime">
|
||||
<div style="display: flex; align-items: center">
|
||||
<el-form-item label="时间">
|
||||
<div>{{ item.activityTime }}</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="计划的活动内容">
|
||||
<div>{{ item.planContent }}</div>
|
||||
</el-form-item>
|
||||
</div>
|
||||
</div>
|
||||
</el-form>
|
||||
</el-dialog>
|
||||
<!-- 问答弹窗-->
|
||||
<el-dialog v-model="wendadialog.visible" title="问答" width="40%" append-to-body>
|
||||
@ -469,7 +516,7 @@ const saveupdate = async (row?: ActivityVO, type) => {
|
||||
form.value.status = type == 1 ? 2 : 0;
|
||||
const test = type == 1 ? '发布' : '撤销发布';
|
||||
const _ids = row?.activityName || ids.value;
|
||||
await proxy?.$modal.confirm('是否确认' + test + '活动名称 为' + _ids + '的数据项?').finally(() => (loading.value = false));
|
||||
await proxy?.$modal.confirm('是否确认' + test + '活动信息编号为' + _ids + '的数据项?').finally(() => (loading.value = false));
|
||||
await updateActivity(form.value).finally(() => (buttonLoading.value = false));
|
||||
proxy?.$modal.msgSuccess(test + '成功');
|
||||
await getList();
|
||||
@ -528,9 +575,8 @@ const submitForm = () => {
|
||||
|
||||
/** 删除按钮操作 */
|
||||
const handleDelete = async (row?: ActivityVO) => {
|
||||
const _ids = row?.id || ids.value;
|
||||
const _idsname = row?.activityName || ids.value;
|
||||
await proxy?.$modal.confirm('是否确认删除活动名称为"' + _idsname + '"的数据项?').finally(() => (loading.value = false));
|
||||
const _ids = row?.activityName || ids.value;
|
||||
await proxy?.$modal.confirm('是否确认删除活动信息编号为"' + _ids + '"的数据项?').finally(() => (loading.value = false));
|
||||
await delActivity(_ids);
|
||||
proxy?.$modal.msgSuccess('删除成功');
|
||||
await getList();
|
||||
|
@ -40,12 +40,7 @@
|
||||
<el-table v-loading="loading" :height="autoTableHeight" border :data="articleList"
|
||||
@selection-change="handleSelectionChange">
|
||||
<!-- <el-table-column type="selection" width="55" align="center" /> -->
|
||||
<!-- <el-table-column label="ID" align="center" prop="id" v-if="true" width="180px" /> -->
|
||||
<el-table-column fixed label="序号" align="center" width="80">
|
||||
<template #default="scope">
|
||||
<span>{{ (queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1 }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="ID" align="center" prop="id" v-if="true" width="180px" />
|
||||
<el-table-column label="标题" align="center" prop="title" />
|
||||
<el-table-column label="内容" align="center" prop="content" width="80px">
|
||||
<template #default="scope">
|
||||
@ -63,7 +58,7 @@
|
||||
<template #default="scope">
|
||||
<el-tag v-if="scope.row.status == 0" type="info">未发布</el-tag>
|
||||
<el-tag v-if="scope.row.status == 1" type="success">审核中</el-tag>
|
||||
<el-tag v-if="scope.row.status == 2" type="primary">已发布</el-tag>
|
||||
<el-tag v-if="scope.row.status == 2" type="success">已发布</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="更新时间" align="center" prop="updateTime" width="120">
|
||||
@ -74,9 +69,9 @@
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="160px">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" v-if="scope.row.status == 0" @click="updateRow(scope.row,1)"
|
||||
<el-button link type="primary" v-if="scope.row.status == 0" @click="updateRow(scope.row,'2')"
|
||||
v-hasPermi="['manage:article:edit']">发布</el-button>
|
||||
<el-button link type="primary" v-if="scope.row.status == 2" @click="updateRow(scope.row,0)"
|
||||
<el-button link type="primary" v-if="scope.row.status == 2" @click="updateRow(scope.row,'0')"
|
||||
v-hasPermi="['manage:article:edit']">撤销发布</el-button>
|
||||
<el-tooltip content="编辑" placement="top" v-if="scope.row.status == 0">
|
||||
<el-button link type="primary" @click="handleUpdate(scope.row)"
|
||||
@ -93,7 +88,7 @@
|
||||
<pagination id="table_page" v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
|
||||
v-model:limit="queryParams.pageSize" @pagination="getList" />
|
||||
<!-- 添加或修改文章对话框 -->
|
||||
<el-dialog :title="dialog.title" v-model="dialog.visible" :width="dialogWidth" append-to-body>
|
||||
<el-dialog :title="dialog.title" v-model="dialog.visible" width="700px" append-to-body>
|
||||
<el-form ref="articleFormRef" :model="form" :rules="rules" label-width="80px">
|
||||
<el-form-item label="文章标题" prop="title">
|
||||
<el-input v-model="form.title" placeholder="请输入文章标题" />
|
||||
@ -136,7 +131,7 @@
|
||||
import { listTag,tagAll } from '@/api/manage/tag';
|
||||
import { listArticle, getArticle, delArticle, addArticle, updateArticle } from '@/api/manage/article';
|
||||
import { ArticleVO, ArticleQuery, ArticleForm } from '@/api/manage/article/types';
|
||||
const dialogWidth=ref(window.innerWidth*0.6+'px');
|
||||
|
||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||
const sys_user_tagOptions = ref([]); //标签库
|
||||
const autoTableHeight = ref<number>(750);
|
||||
@ -291,12 +286,11 @@ const handleUpdate = async (row?:any) => {
|
||||
* @param row 发布,撤销发布
|
||||
* @param type
|
||||
*/
|
||||
const updateRow = async (row: any, type: number) => {
|
||||
await proxy?.$modal.confirm('是否确认' + (type == 0 ? '撤销发布' : '发布') + '名称为"' + row.title + '"的数据项?');
|
||||
Object.assign(form.value, row);
|
||||
form.value.status = type;
|
||||
const updateRow = async (row: any, type: string) => {
|
||||
await proxy?.$modal.confirm('是否确认' + (type == '0' ? '撤销发布' : '发布') + '名称为"' + row.title + '"的数据项?');
|
||||
row.status = type;
|
||||
buttonLoading.value = true;
|
||||
await updateArticle(form.value).finally(() => (buttonLoading.value = false));
|
||||
await updateArticle(row).finally(() => (buttonLoading.value = false));
|
||||
proxy?.$modal.msgSuccess('操作成功');
|
||||
getList();
|
||||
};
|
||||
|
@ -44,7 +44,7 @@
|
||||
<el-table-column label="状态" align="center" prop="" width="90px">
|
||||
<template #default="scope">
|
||||
<el-tag v-if="scope.row.status == 0" type="info">未上架</el-tag>
|
||||
<el-tag v-if="scope.row.status == 1" type="primary">已上架</el-tag>
|
||||
<el-tag v-if="scope.row.status == 1" type="success">已上架</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="180px">
|
||||
|
@ -32,9 +32,8 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="Search" @click="handleQuery"
|
||||
v-hasPermi="['manage:dyUser:query']">搜索</el-button>
|
||||
<el-button icon="Refresh" @click="resetQuery" v-hasPermi="['manage:dyUser:query']">重置</el-button>
|
||||
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
||||
<!-- <el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['manage:dyUser:edit']"
|
||||
>封禁</el-button
|
||||
> -->
|
||||
@ -49,22 +48,13 @@
|
||||
<el-table :height="autoTableHeight" v-loading="loading" :data="dyUserList" @selection-change="handleSelectionChange"
|
||||
style="width: 100%" border>
|
||||
<!-- <el-table-column fixed type="selection" width="55" align="center" /> -->
|
||||
<el-table-column fixed label="序号" align="center" width="80">
|
||||
<template #default="scope">
|
||||
<span>{{ (queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1 }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column fixed label="用户ID" align="center" prop="id" /> -->
|
||||
<el-table-column fixed label="用户ID" align="center" prop="id" />
|
||||
<el-table-column fixed label="帐号状态" align="center" prop="status">
|
||||
<template #default="scope">
|
||||
<dict-tag :options="dy_user_status" :value="scope.row.status" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column fixed label="会员等级" align="center" prop="levelId">
|
||||
<template #default="scope">
|
||||
<span>{{ levelList.find(item => item.id === scope.row.levelId)?.levelName }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column fixed label="会员等级" align="center" prop="levelName" />
|
||||
<el-table-column fixed label="昵称" align="center" prop="nickName" />
|
||||
<el-table-column label="用户性别" align="center" prop="sex">
|
||||
<template #default="scope">
|
||||
@ -91,50 +81,46 @@
|
||||
</el-table-column>
|
||||
<el-table-column width="55" label="年龄" align="center" prop="age" />
|
||||
<el-table-column width="150" label="常住地" align="center" prop="address" />
|
||||
<el-table-column width="80" label="星座" align="center" prop="constellation">
|
||||
<template #default="scope">
|
||||
<dict-tag :options="dy_user_sign" :value="scope.row.constellation" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column width="70" label="星座" align="center" prop="constellation" />
|
||||
<el-table-column width="100" label="职业" align="center" prop="occupation" />
|
||||
<el-table-column width="120" label="简介" align="center" prop="remark" />
|
||||
<el-table-column width="80" label="IP形象" align="center" prop="" />
|
||||
<el-table-column width="80" label="发布笔记" align="center" prop="">
|
||||
<template #default="scope">
|
||||
<span style="color: dodgerblue; cursor: pointer; text-decoration: underline"
|
||||
@click="openNoteListDialog(scope.row)">{{ scope.row.notebookCount }}</span>
|
||||
@click="openNoteListDialog(scope.row)">12</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column width="90" label="发布的活动" align="center" prop="">
|
||||
<template #default="scope">
|
||||
<span style="color: dodgerblue; cursor: pointer; text-decoration: underline"
|
||||
@click="openPartyListDialog(scope.row)">{{ scope.row.pubMateCount }}</span>
|
||||
@click="openPartyListDialog(scope.row)">15</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column width="80" label="关注的人" align="center" prop="focusCount" />
|
||||
<el-table-column width="80" label="粉丝数" align="center" prop="fanCount" />
|
||||
<el-table-column width="80" label="关注的人" align="center" prop="" />
|
||||
<el-table-column width="80" label="粉丝数" align="center" prop="" />
|
||||
<el-table-column width="90" label="到过的景点" align="center" prop="">
|
||||
<template #default="scope">
|
||||
<span style="color: dodgerblue; cursor: pointer; text-decoration: underline"
|
||||
@click="openScenicListDialog(scope.row)">{{ scope.row.scenicSpotCount }}</span>
|
||||
@click="openScenicListDialog(scope.row)">20</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column width="90" label="点亮的城市" align="center" prop="">
|
||||
<template #default="scope">
|
||||
<span style="color: dodgerblue; cursor: pointer; text-decoration: underline"
|
||||
@click="openCityListDialog(scope.row)">{{ scope.row.cityCount }}</span>
|
||||
@click="openCityListDialog(scope.row)">25</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column width="110" label="获得的明信片" align="center" prop="">
|
||||
<template #default="scope">
|
||||
<span style="color: dodgerblue; cursor: pointer; text-decoration: underline"
|
||||
@click="openPostcardListDialog(scope.row)">{{ scope.row.postcardCount }}</span>
|
||||
@click="openPostcardListDialog(scope.row)">12</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column width="80" label="我的愿望" align="center" prop="" />
|
||||
<el-table-column width="80" label="我的背包" align="center" prop="" />
|
||||
<el-table-column width="90" label="获得的物品" align="center" prop="obtainedItemsCount" />
|
||||
<el-table-column width="70" label="积分" align="center" prop="userScore" />
|
||||
<el-table-column width="90" label="获得的物品" align="center" prop="" />
|
||||
<el-table-column width="70" label="积分" align="center" prop="score" />
|
||||
<el-table-column width="90" label="我的订单" align="center" prop="">
|
||||
<template #default="scope">
|
||||
<span style="color: dodgerblue; cursor: pointer" @click="openOrderListDialog(scope.row)">查看详情</span>
|
||||
@ -148,7 +134,7 @@
|
||||
</el-table-column>
|
||||
<el-table-column width="80" label="处理方式" align="center" prop="">
|
||||
<template #default="scope">
|
||||
<dict-tag v-if="scope.row.status!=0" :options="dy_user_status" :value="scope.row.status" />
|
||||
<dict-tag :options="dy_user_status" :value="scope.row.status" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column width="150" label="封禁理由" align="center" prop="reason" show-overflow-tooltip>
|
||||
@ -156,14 +142,14 @@
|
||||
<dict-tag :options="dy_user_ban_mode" :value="scope.row.reason" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column width="80" label="封禁天数" align="center" prop="">
|
||||
<el-table-column width="80" label="封禁天数" align="center" prop="banDays">
|
||||
<template #default="scope">
|
||||
<dict-tag v-if="scope.row.banDays!='0'" :options="dy_user_ban_days" :value="scope.row.banDays" />
|
||||
<dict-tag :options="dy_user_ban_days" :value="scope.row.banDays" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column width="90" label="操作人" align="center" prop="" />
|
||||
<el-table-column width="120" label="操作时间" align="center" prop="" />
|
||||
<el-table-column fixed="right" label="操作" min-width="120" align="center">
|
||||
<el-table-column fixed="right" label="操作" min-width="120">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" size="small" v-hasPermi="['manage:dyUser:edit']" v-if="scope.row.status == 0"
|
||||
@click="openbanned(scope.row)">封禁</el-button>
|
||||
@ -187,8 +173,8 @@
|
||||
</el-form-item>
|
||||
<el-form-item label="处理方式" prop="status">
|
||||
<el-radio-group v-model="form.status">
|
||||
<el-radio v-for="dict in dy_user_status" :key="dict.value" :label="dict.label" :value="parseInt(dict.value)"
|
||||
v-show="dict.value != '0'">{{ dict.label }}</el-radio>
|
||||
<el-radio v-for="dict in dy_user_status" :key="dict.value" :label="dict.label"
|
||||
:value="parseInt(dict.value)">{{ dict.label }}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="处理天数" prop="banDays">
|
||||
@ -284,7 +270,7 @@
|
||||
</template>
|
||||
</el-dialog>
|
||||
<!-- 用户邀请人数 -->
|
||||
<el-dialog title="邀请人数(大转盘)" v-model="inviteListDialog.visible" width="500px" append-to-body>
|
||||
<el-dialog title="邀请人数" v-model="inviteListDialog.visible" width="500px" append-to-body>
|
||||
<el-table :height="300" v-loading="loading" :data="inviteListDialog.inviteList" border>
|
||||
<el-table-column label="用户名称" align="center" fixed prop="nickName" />
|
||||
<el-table-column label="用户头像" align="center" fixed prop="" />
|
||||
@ -322,8 +308,8 @@ import { listDyUser, getDyUser, delDyUser, addDyUser, updateDyUser,userSights,us
|
||||
import { DyUserVO, DyUserQuery, DyUserForm } from '@/api/manage/dyUser/types';
|
||||
|
||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||
const { dy_user_ban_days, dy_user_status, sys_user_sex, dy_user_ban_mode,dy_user_sign } = toRefs<any>(
|
||||
proxy?.useDict('dy_user_ban_days', 'dy_user_status', 'sys_user_sex', 'dy_user_ban_mode','dy_user_sign')
|
||||
const { dy_user_ban_days, dy_user_status, sys_user_sex, dy_user_ban_mode } = toRefs<any>(
|
||||
proxy?.useDict('dy_user_ban_days', 'dy_user_status', 'sys_user_sex', 'dy_user_ban_mode')
|
||||
);
|
||||
const orderLists = ref([]); //用户订单列表
|
||||
const scenicList = ref([]); //用户点亮的景点
|
||||
@ -528,8 +514,8 @@ const handleStatus = async (row: DyUserVO) => {
|
||||
await proxy?.$modal.confirm('是否确认解封用户昵称为"' + row.nickName + '"的数据项?')
|
||||
Object.assign(form.value, row);
|
||||
form.value.status = 0;
|
||||
form.value.reason = '';
|
||||
form.value.banDays='0';
|
||||
form.value.reason = null;
|
||||
form.value.banDays=null
|
||||
loading.value = true;
|
||||
await updateDyUser(form.value).finally(() => (loading.value = false));
|
||||
proxy?.$modal.msgSuccess('操作成功');
|
||||
|
@ -16,7 +16,6 @@
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
||||
<el-button v-hasPermi="['manage:hotel:add']" type="primary" plain icon="Plus" @click="handleAdd">新增</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
@ -24,12 +23,23 @@
|
||||
</transition>
|
||||
|
||||
<el-card shadow="never">
|
||||
<el-table v-loading="loading" :data="hotelList">
|
||||
<el-table-column fixed label="序号" align="center" width="80">
|
||||
<template #default="scope">
|
||||
<span>{{ (queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1 }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<template #header>
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button v-hasPermi="['manage:hotel:add']" type="primary" plain icon="Plus" @click="handleAdd">新增</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button v-hasPermi="['manage:hotel:remove']" type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()"
|
||||
>删除</el-button
|
||||
>
|
||||
</el-col>
|
||||
<right-toolbar v-model:showSearch="showSearch" @query-table="getList"></right-toolbar>
|
||||
</el-row>
|
||||
</template>
|
||||
|
||||
<el-table v-loading="loading" :data="hotelList" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column v-if="true" label="ID" align="center" prop="id" />
|
||||
<el-table-column label="住宿商家名称" align="center" prop="name" />
|
||||
<el-table-column label="商家图片" align="center" prop="imageUrl" />
|
||||
<el-table-column label="商家地理位置" align="center" prop="address" />
|
||||
@ -303,7 +313,7 @@ const handleEdit = async (row?: HotelVO) => {
|
||||
const res = await getHotel(_id);
|
||||
Object.assign(form.value, res.data);
|
||||
const _idname = row?.name;
|
||||
const text = row?.status != 1 ? '是否确认发布商家名称为"' : '是否撤销发布商家名称为"';
|
||||
const text = row?.status != 1 ? '是否确认发布商家名称为' : '是否撤销发布商家名称为';
|
||||
const messages = row?.status != 1 ? '发布成功' : '撤销成功';
|
||||
await proxy?.$modal.confirm(text + _idname + '"的数据项?').finally(() => (loading.value = false));
|
||||
const template = {
|
||||
@ -333,6 +343,8 @@ const performSearch = async (text) => {
|
||||
jsonp(`https://apis.map.qq.com/ws/geocoder/v1/?address=${text}&key=${'6XFBZ-SAVLT-JGIX2-VOLMK-6S2H3-XUBGO'}&output=jsonp`, {}).then((data) => {
|
||||
console.log(data);
|
||||
if (data.status == 0) {
|
||||
center.value.lat = data.result.location.lat;
|
||||
center.value.lng = data.result.location.lng;
|
||||
form.value.address =
|
||||
data.result.address_components.province +
|
||||
data.result.address_components.city +
|
||||
@ -345,7 +357,6 @@ const performSearch = async (text) => {
|
||||
form.value.regionCode = data.result.ad_info.adcode; //行政区划编码
|
||||
// form.value.province = data.result.address_components.province;
|
||||
// form.value.city = data.result.address_components.city;
|
||||
center.value = { lat: data.result.location.lat, lng: data.result.location.lng };
|
||||
geometries.value = [{ styleId: 'marker', position: { lat: data.result.location.lat, lng: data.result.location.lng } }];
|
||||
} else if (data.status == 348) {
|
||||
//地址信息不明确,需弹出提示
|
||||
@ -375,7 +386,8 @@ const onClick = (e: any) => {
|
||||
// form.value.city = data.result.address_component.city;
|
||||
// form.value.region = data.result.ad_info.adcode; //行政区划编码
|
||||
form.value.regionCode = data.result.ad_info.adcode; //行政区划编码
|
||||
center.value = { lat: data.result.location.lat, lng: data.result.location.lng };
|
||||
center.value.lat = data.result.location.lat;
|
||||
center.value.lng = data.result.location.lng;
|
||||
searchLocation.value = data.result.formatted_addresses.recommend;
|
||||
geometries.value = [{ styleId: 'marker', position: { lat: data.result.location.lat, lng: data.result.location.lng } }];
|
||||
}
|
||||
|
@ -12,9 +12,8 @@
|
||||
<el-form-item label="发布状态" prop="status">
|
||||
<el-select v-model="queryParams.status" class="inputWidth" placeholder="请选择发布状态" clearable
|
||||
@keyup.enter="handleQuery">
|
||||
<el-option label="已发布" :value="1" />
|
||||
<el-option label="未发布" :value="0" />
|
||||
<el-option label="审核中" :value="1" />
|
||||
<el-option label="已发布" :value="2" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
@ -42,9 +41,8 @@
|
||||
<el-table-column label="排序" align="center" prop="shor" />
|
||||
<el-table-column label="发布状态" align="center" prop="status">
|
||||
<template #default="scope">
|
||||
<el-tag v-if="scope.row.status == 0" type="info">未发布</el-tag>
|
||||
<el-tag v-else-if="scope.row.status == 1" type="success">审核中</el-tag>
|
||||
<el-tag v-else-if="scope.row.status == 1" type="primary">已发布</el-tag>
|
||||
<el-tag v-if="scope.row.status == 1" type="success">已发布</el-tag>
|
||||
<el-tag v-else type="info">未发布</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="创建者" align="center" prop="createName" />
|
||||
@ -58,7 +56,7 @@
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" @click="handleStatus(scope.row,1)" v-if="scope.row.status == 0"
|
||||
v-hasPermi="['manage:ipImage:edit']">发布</el-button>
|
||||
<el-button link type="primary" @click="handleStatus(scope.row,0)" v-if="scope.row.status==2"
|
||||
<el-button link type="primary" @click="handleStatus(scope.row,0)" v-if="scope.row.status==1"
|
||||
v-hasPermi="['manage:ipImage:edit']">撤销发布</el-button>
|
||||
<el-tooltip content="编辑" placement="top">
|
||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-if="scope.row.status == 0"
|
||||
@ -246,7 +244,7 @@ const submitForm = () => {
|
||||
/** 删除按钮操作 */
|
||||
const handleDelete = async (row?: IpImageVO) => {
|
||||
const _ids = row?.id || ids.value;
|
||||
await proxy?.$modal.confirm('是否确认删除IP形象为"' + row.ipName + '"的数据项?').finally(() => loading.value = false);
|
||||
await proxy?.$modal.confirm('是否确认删除IP形象编号为"' + _ids + '"的数据项?').finally(() => loading.value = false);
|
||||
await delIpImage(_ids);
|
||||
proxy?.$modal.msgSuccess("删除成功");
|
||||
await getList();
|
||||
|
@ -37,8 +37,7 @@
|
||||
</el-table-column>
|
||||
<el-table-column label="状态" align="center" prop="status">
|
||||
<template #default="scope">
|
||||
<el-tag v-if="scope.row.status == 0" type="info">未发布</el-tag>
|
||||
<el-tag v-if="scope.row.status == 1" type="primary">已发布</el-tag>
|
||||
<span>{{ scope.row.status == 0 ? '未发布' : '已发布' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="创建者" align="center" prop="createName" />
|
||||
|
@ -15,7 +15,6 @@
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
||||
<el-button v-hasPermi="['manage:mkJigsaw:add']" type="primary" plain icon="Plus" @click="handleAdd">新增</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
@ -23,14 +22,23 @@
|
||||
</transition>
|
||||
|
||||
<el-card shadow="never">
|
||||
<template #header>
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button v-hasPermi="['manage:mkJigsaw:add']" type="primary" plain icon="Plus" @click="handleAdd">新增</el-button>
|
||||
</el-col>
|
||||
<right-toolbar v-model:showSearch="showSearch" @query-table="getList"></right-toolbar>
|
||||
</el-row>
|
||||
</template>
|
||||
|
||||
<el-table v-loading="loading" :data="mkJigsawList">
|
||||
<el-table-column label="任务名称" align="center" prop="name" show-overflow-tooltip />
|
||||
<el-table-column label="任务名称" align="center" prop="name" />
|
||||
<el-table-column label="任务类别" align="center" prop="category">
|
||||
<template #default="scope">
|
||||
<dict-tag :options="mk_jigsaw_task_catagory" :value="scope.row.category" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="商品ID" align="center" prop="productId" show-overflow-tooltip />
|
||||
<el-table-column label="商品ID" align="center" prop="productId" />
|
||||
<el-table-column label="商品名称" align="center" prop="productName" />
|
||||
<el-table-column label="商品类别" align="center" prop="productCategory">
|
||||
<template #default="scope">
|
||||
@ -45,16 +53,8 @@
|
||||
</el-table-column>
|
||||
<el-table-column label="拼图数量" align="center" prop="jigsawConfigCount" />
|
||||
<el-table-column label="设置得奖人数" align="center" prop="awardConfigCount" />
|
||||
<el-table-column label="参与人数" align="center" prop="joinCount">
|
||||
<template #default="scope">
|
||||
<el-button type="primary" link>{{ scope.row.joinCount }}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="实际得奖人数" align="center" prop="awardCount">
|
||||
<template #default="scope">
|
||||
<el-button type="primary" link>{{ scope.row.awardCount }}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="参与人数" align="center" prop="joinCount" />
|
||||
<el-table-column label="实际得奖人数" align="center" prop="awardCount" />
|
||||
<el-table-column label="拼图碎片获得人数" align="center" prop="awardCount">
|
||||
<template #default="scope">
|
||||
<el-button type="primary" link @click="imagesui(scope.row)">查看详情</el-button>
|
||||
@ -73,9 +73,9 @@
|
||||
<el-tag v-if="scope.row.status == 2" type="primary">已发布</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="创建人" align="center" prop="createName" show-overflow-tooltip />
|
||||
<el-table-column label="创建时间" align="center" prop="createTime" show-overflow-tooltip />
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="150px">
|
||||
<el-table-column label="创建人" align="center" prop="createName" />
|
||||
<el-table-column label="创建时间" align="center" prop="createTime" />
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="120px">
|
||||
<template #default="scope">
|
||||
<el-button v-if="scope.row.status == 0" v-hasPermi="['manage:mkJigsaw:edit']" link type="primary" @click="handleUpdate(scope.row, 2)"
|
||||
>编辑</el-button
|
||||
@ -130,8 +130,8 @@
|
||||
start-placeholder="选择开始时间"
|
||||
end-placeholder="选择结束时间"
|
||||
format="YYYY-MM-DD HH:mm:ss"
|
||||
date-format="YYYY/MM/DD"
|
||||
time-format="HH:mm:ss"
|
||||
date-format="YYYY/MM/DD ddd"
|
||||
time-format="A hh:mm:ss"
|
||||
value-format="YYYY-MM-DD HH:mm:ss"
|
||||
:picker-options="{ disabledDate: dateOptions }"
|
||||
@change="mkdatetime"
|
||||
@ -195,20 +195,20 @@
|
||||
<div>{{ form.startDate }}~{{ form.endDate }}</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="设置拼图数量">
|
||||
<div>{{ form.jigsawConfigCount }}</div>
|
||||
<div>{{form.jigsawConfigCount}}</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="得奖人数">
|
||||
<div>{{ form.awardConfigCount }}</div>
|
||||
<div>{{form.awardConfigCount}}</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="控制得奖拼图">
|
||||
<el-select v-model="form.controlJigsawIndex" placeholder="请选择控制得奖拼图" style="width: 300px" disabled @change="selectnumlist">
|
||||
<el-select v-model="form.controlJigsawIndex" placeholder="请选择控制得奖拼图" style="width: 300px" @change="selectnumlist" disabled>
|
||||
<el-option v-for="dict in numlist" :key="dict.label" :label="dict.label" :value="dict.label"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<div class="numlistclasss">
|
||||
<div v-for="item in numlistdata" :key="item.name">
|
||||
<el-form-item :label="`${item.name}:可获得概率`">
|
||||
<div>{{ item.probability }}%</div>
|
||||
<div>{{item.probability}}%</div>
|
||||
</el-form-item>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -31,11 +31,7 @@
|
||||
|
||||
<el-table v-loading="loading" border :data="mkPostcardList" :height="autoTableHeight"
|
||||
@selection-change="handleSelectionChange">
|
||||
<el-table-column label="序号" align="center" width="80">
|
||||
<template #default="scope">
|
||||
<span>{{ (queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1 }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="ID" align="center" prop="id" v-if="true" width="150" />
|
||||
<el-table-column label="明信片名称" align="center" prop="name" />
|
||||
<el-table-column label="关联景点" align="center" prop="articleId">
|
||||
<template #default="scope">
|
||||
@ -57,8 +53,7 @@
|
||||
<!-- 0-未上架 1-已上架 -->
|
||||
<el-table-column label="状态" align="center" prop="status">
|
||||
<template #default="scope">
|
||||
<el-tag v-if="scope.row.status == 0" type="info">未上架</el-tag>
|
||||
<el-tag v-if="scope.row.status == 1" type="primary">已上架</el-tag>
|
||||
<span>{{ scope.row.status == 1 ? '已上架' : '未上架'}}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="创建者" align="center" prop="updateByName" />
|
||||
|
@ -1,32 +1,33 @@
|
||||
<!-- 笔记管理 -->
|
||||
<template>
|
||||
<div class="p-2">
|
||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter"
|
||||
:leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||
<div v-show="showSearch" class="mb-[10px]">
|
||||
<el-card shadow="hover">
|
||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
||||
<el-form-item label="笔记标题" prop="id">
|
||||
<el-input v-model="queryParams.title" placeholder="请输入笔记标题" clearable @keyup.enter="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="发布人" prop="updateByName">
|
||||
<el-input v-model="queryParams.updateByName" placeholder="请输入发布人" clearable @keyup.enter="handleQuery" />
|
||||
<el-form-item label="发布人" prop="title">
|
||||
<el-input v-model="queryParams.title" placeholder="请输入发布人" clearable @keyup.enter="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="标记地点" prop="cover">
|
||||
<!-- <el-input v-model="queryParams.cover" placeholder="请输入标记地点" clearable @keyup.enter="handleQuery" />-->
|
||||
<el-select v-model="queryParams.location" placeholder="请选择标记地点" style="width: 240px">
|
||||
<el-select v-model="queryParams.cover" placeholder="请选择标记地点" style="width: 240px">
|
||||
<el-option v-for="item in sys_user_contentOptions" :key="item.id" :label="item.name" :value="item.id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="发布状态" prop="tagId">
|
||||
<!-- <el-input v-model="queryParams.tagId" placeholder="请输入标签" clearable @keyup.enter="handleQuery" /> -->
|
||||
<el-select v-model="queryParams.status" placeholder="请选择发布状态" style="width: 240px" @keyup.enter="handleQuery">
|
||||
<el-select v-model="queryParams.tagId" placeholder="请选择发布状态" style="width: 240px"
|
||||
@keyup.enter="handleQuery">
|
||||
<el-option v-for="item in statusoptions" :key="item.value" :label="item.label" :value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
||||
<el-button v-hasPermi="['manage:notebook:add']" type="primary" plain icon="Plus" @click="handleAdd">新增 </el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
@ -34,26 +35,41 @@
|
||||
</transition>
|
||||
|
||||
<el-card shadow="never">
|
||||
<el-table v-loading="loading" :data="notebookList" border @selection-change="handleSelectionChange">
|
||||
<template #header>
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button v-hasPermi="['manage:notebook:add']" type="primary" plain icon="Plus" @click="handleAdd">新增
|
||||
</el-button>
|
||||
</el-col>
|
||||
<!-- <el-col :span="1.5">-->
|
||||
<!-- <el-button v-hasPermi="['manage:notebook:remove']" type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()"-->
|
||||
<!-- >删除-->
|
||||
<!-- </el-button>-->
|
||||
<!-- </el-col>-->
|
||||
<!-- <el-col :span="1.5">
|
||||
<el-button v-hasPermi="['manage:notebook:export']" type="warning" plain icon="Download"
|
||||
@click="handleExport">导出 </el-button>
|
||||
</el-col> -->
|
||||
<right-toolbar v-model:showSearch="showSearch" @query-table="getList"></right-toolbar>
|
||||
</el-row>
|
||||
</template>
|
||||
|
||||
<el-table v-loading="loading" :data="notebookList" @selection-change="handleSelectionChange">
|
||||
<!-- <el-table-column type="selection" width="55" align="center" />-->
|
||||
<el-table-column label="序号" align="center" width="80">
|
||||
<template #default="scope">
|
||||
<span>{{ (queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1 }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="笔记标题" align="center" prop="title" show-overflow-tooltip />
|
||||
<el-table-column v-if="true" label="ID" align="center" prop="id" />
|
||||
<el-table-column label="笔记标题" align="center" prop="title" />
|
||||
<el-table-column label="笔记封面" align="center" prop="cover">
|
||||
<template #default="scope">
|
||||
<image-preview :src="scope.row.cover" :width="40" :height="40" />
|
||||
<image-preview :src="scope.row.cover" :width="50" :height="50" />
|
||||
<!-- <image-preview :src="scope.row.productImageUrl" /> -->
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="标记地点" align="center" prop="location" show-overflow-tooltip>
|
||||
<el-table-column label="标记地点" align="center" prop="location">
|
||||
<template #default="scope">
|
||||
<span>{{ formatlocation(scope.row.location) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="标签" align="center" prop="tagId" show-overflow-tooltip>
|
||||
<el-table-column label="标签" align="center" prop="tagId">
|
||||
<template #default="scope">
|
||||
<span>{{ formatTag(scope.row.tagId) }}</span>
|
||||
</template>
|
||||
@ -85,36 +101,23 @@
|
||||
<el-table-column label="操作时间" align="center" prop="updateTime" width="200px" />
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="150px">
|
||||
<template #default="scope">
|
||||
<el-button
|
||||
v-if="scope.row.status == 0 || scope.row.status == 1"
|
||||
v-hasPermi="['manage:notebook:edit']"
|
||||
link
|
||||
type="primary"
|
||||
@click="handleUpdate(scope.row)"
|
||||
>编辑</el-button
|
||||
>
|
||||
<el-button v-if="scope.row.status == 0" v-hasPermi="['manage:notebook:edit']" link type="primary" @click="fabudata(scope.row)"
|
||||
>发布</el-button
|
||||
>
|
||||
<el-button v-if="scope.row.status == 3" v-hasPermi="['manage:notebook:edit']" link type="primary" @click="fabudata(scope.row)"
|
||||
>撤销发布</el-button
|
||||
>
|
||||
<el-button v-if="scope.row.status == 0||scope.row.status == 1" v-hasPermi="['manage:notebook:edit']" link
|
||||
type="primary" @click="handleUpdate(scope.row)">编辑</el-button>
|
||||
<el-button v-if="scope.row.status == 0" v-hasPermi="['manage:notebook:edit']" link type="primary"
|
||||
@click="fabudata(scope.row)">发布</el-button>
|
||||
<el-button v-if="scope.row.status == 3" v-hasPermi="['manage:notebook:edit']" link type="primary"
|
||||
@click="fabudata(scope.row)">撤销发布</el-button>
|
||||
<!-- <el-tooltip content="发布" placement="top">-->
|
||||
<!-- <el-button v-hasPermi="['manage:notebook:edit']" link type="primary" icon="Edit" @click="handleUpdate(scope.row)"></el-button>-->
|
||||
<!-- </el-tooltip>-->
|
||||
<el-button
|
||||
v-if="scope.row.status == 0 || scope.row.status == 1"
|
||||
v-hasPermi="['manage:notebook:remove']"
|
||||
link
|
||||
type="primary"
|
||||
@click="handleDelete(scope.row)"
|
||||
>删除</el-button
|
||||
>
|
||||
<el-button v-if="scope.row.status == 0||scope.row.status == 1" v-hasPermi="['manage:notebook:remove']" link
|
||||
type="primary" @click="handleDelete(scope.row)">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<pagination v-show="total > 0" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" :total="total" @pagination="getList" />
|
||||
<pagination v-show="total > 0" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize"
|
||||
:total="total" @pagination="getList" />
|
||||
</el-card>
|
||||
<!-- 添加或修改笔记对话框 -->
|
||||
<el-dialog v-model="dialog.visible" :title="dialog.title" width="60%" append-to-body>
|
||||
@ -153,8 +156,11 @@
|
||||
</template>
|
||||
</el-dialog>
|
||||
<!-- 笔记详情-->
|
||||
<el-dialog v-model="concentdialog.visible" title="笔记详情" width="500px" append-to-body>
|
||||
<note :form="form"></note>
|
||||
<el-dialog v-model="concentdialog.visible" title="笔记详情" width="50%" append-to-body>
|
||||
<div>{{ form.title }}</div>
|
||||
<div>{{ formatTag(form.tagId) }}</div>
|
||||
<div>{{ formatlocation(form.location) }}</div>
|
||||
<div v-html="form.content"></div>
|
||||
</el-dialog>
|
||||
<!-- 评论详情 -->
|
||||
<el-dialog v-model="comment.visible" title="评论详情" width="600px" append-to-body>
|
||||
@ -299,9 +305,9 @@ const formatTag = (tagId: string | null) => {
|
||||
// }
|
||||
for (let i = 0; i < sys_user_tagOptions.value.length; i++) {
|
||||
const element = sys_user_tagOptions.value[i];
|
||||
if (tagId != null) {
|
||||
let filteredArray = tagId.split(',').filter((item) => item == element.id);
|
||||
if (filteredArray.length > 0) {
|
||||
if (tagId!=null) {
|
||||
let filteredArray = tagId.split(',').filter((item) => item==element.id);
|
||||
if (filteredArray.length>0) {
|
||||
tagString += ',' + element.title;
|
||||
}
|
||||
}
|
||||
@ -380,8 +386,6 @@ const handleSelectionChange = (selection: NotebookVO[]) => {
|
||||
const handleAdd = () => {
|
||||
reset();
|
||||
dialog.visible = true;
|
||||
tagvalue.value = '';
|
||||
addressvalue.value = '';
|
||||
dialog.title = '添加笔记';
|
||||
};
|
||||
|
||||
@ -391,8 +395,8 @@ const handleUpdate = async (row?: NotebookVO) => {
|
||||
const _id = row?.id || ids.value[0];
|
||||
const res = await getNotebook(_id);
|
||||
Object.assign(form.value, res.data);
|
||||
tagvalue.value = form.value.tagId && form.value.tagId.split(',');
|
||||
addressvalue.value = form.value.tagId && form.value.location.split(',');
|
||||
tagvalue.value = form.value.tagId.split(',');
|
||||
addressvalue.value = form.value.location.split(',');
|
||||
dialog.visible = true;
|
||||
dialog.title = '修改笔记';
|
||||
};
|
||||
|
@ -71,11 +71,7 @@
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="订单号" align="center" prop="orderNumber" />
|
||||
<el-table-column label="来源" align="center" prop="source" width="80px">
|
||||
<template #default="scope">
|
||||
<dict-tag :options="dy_order_source" :value="scope.row.source" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="来源" align="center" prop="source" width="80px" />
|
||||
<el-table-column label="商品名称" align="center" prop="productName" />
|
||||
<el-table-column label="商品图片" align="center" prop="productImageUrl" width="100">
|
||||
<template #default="scope">
|
||||
@ -90,9 +86,7 @@
|
||||
<el-table-column label="供应商" align="center" prop="vendorId" />
|
||||
<el-table-column label="订单状态" align="center" prop="orderStatus">
|
||||
<template #default="scope">
|
||||
<!-- <dict-tag :options="dy_order_status" :value="scope.row.orderStatus" /> -->
|
||||
<el-tag v-if="scope.row.orderStatus == 0" type="info">未发货</el-tag>
|
||||
<el-tag v-if="scope.row.orderStatus == 1" type="primary">已发货</el-tag>
|
||||
<dict-tag :options="dy_order_status" :value="scope.row.orderStatus" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="物流名称" align="center" prop="logisticsName" />
|
||||
@ -100,8 +94,8 @@
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" v-if="scope.row.orderStatus == 0" v-hasPermi="['manage:orders:edit']"
|
||||
@click="handleOrderStatus(scope.row,1)">发货</el-button>
|
||||
<el-button link type="primary" @click="handleOrderStatus(scope.row,0)" v-if="scope.row.orderStatus == 1"
|
||||
@click="handleOrderStatus(scope.row,'1')">发货</el-button>
|
||||
<el-button link type="primary" @click="handleOrderStatus(scope.row,'0')" v-if="scope.row.orderStatus == 1"
|
||||
v-hasPermi="['manage:orders:edit']">撤销发货</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
@ -273,10 +267,9 @@ const handleAdd = () => {
|
||||
*/
|
||||
const handleOrderStatus = async (row: OrdersVO,type:string|number) => {
|
||||
await proxy?.$modal.confirm('是否确认' + (type == '0' ? '撤销发货' : '发货') + '商品名称为"' + row.productName + '"的数据项?');
|
||||
Object.assign(form.value, row);
|
||||
form.value.orderStatus = type;
|
||||
row.orderStatus = type;
|
||||
buttonLoading.value = true;
|
||||
await updateOrders(form.value).finally(() => (buttonLoading.value = false));
|
||||
await updateOrders(row).finally(() => (buttonLoading.value = false));
|
||||
proxy?.$modal.msgSuccess('操作成功');
|
||||
getList();
|
||||
}
|
||||
|
@ -32,12 +32,7 @@
|
||||
|
||||
<el-table v-loading="loading" border :height="autoTableHeight" :data="productList"
|
||||
@selection-change="handleSelectionChange">
|
||||
<!-- <el-table-column label="商品ID" align="center" prop="id" v-if="true" width="180px" /> -->
|
||||
<el-table-column fixed label="序号" align="center" width="80">
|
||||
<template #default="scope">
|
||||
<span>{{ (queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1 }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="商品ID" align="center" prop="id" v-if="true" width="180px" />
|
||||
<el-table-column label="商品名称" align="center" prop="productName" />
|
||||
<el-table-column label="商品类别" align="center" prop="categoryId">
|
||||
<template #default="scope">
|
||||
@ -53,9 +48,7 @@
|
||||
<el-table-column label="排序" align="center" prop="sortNum" />
|
||||
<el-table-column label="商品状态" align="center" prop="status">
|
||||
<template #default="scope">
|
||||
<!-- <dict-tag :options="sys_shelf_status" :value="scope.row.status" /> -->
|
||||
<el-tag v-if="scope.row.status == 0" type="info">未上架</el-tag>
|
||||
<el-tag v-if="scope.row.status == 1" type="primary">已上架</el-tag>
|
||||
<dict-tag :options="sys_shelf_status" :value="scope.row.status" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="供应商" align="center" prop="vendorId">
|
||||
|
@ -133,7 +133,7 @@ const productCategoryFormRef = ref<ElFormInstance>();
|
||||
const wishParams = reactive({
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
productCategoryId: undefined,
|
||||
id: undefined,
|
||||
})
|
||||
const dialog = reactive<DialogOption>({
|
||||
visible: false,
|
||||
@ -274,7 +274,7 @@ const handleMakeWish = async (row: ProductCategoryVO) => {
|
||||
return
|
||||
}
|
||||
loading.value = true;
|
||||
wishParams.productCategoryId= row.id;
|
||||
wishParams.id= row.id;
|
||||
getWishUserList();
|
||||
makeWish.visible = true;
|
||||
}
|
||||
|
@ -5,21 +5,20 @@
|
||||
<el-card shadow="hover">
|
||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
||||
<el-form-item label="用户昵称" prop="contentId">
|
||||
<el-input v-model="queryParams.nickName" placeholder="请输入用户昵称" clearable @keyup.enter="handleQuery" />
|
||||
<el-input v-model="queryParams.contentId" placeholder="请输入用户昵称" clearable @keyup.enter="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label=" 状态">
|
||||
<el-form-item label="账号状态" prop="handlingStatus">
|
||||
<el-select v-model="queryParams.handlingStatus" placeholder="请选择状态" clearable>
|
||||
<el-option label="未处理" value="0" />
|
||||
<el-option label="已处理" value="1" />
|
||||
<!-- <el-option v-for="dict in dy_banned_handling_status" :key="dict.value" :label="dict.label" :value="dict.value" />-->
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="性别">
|
||||
<el-form-item label="性别" prop="handlingStatus">
|
||||
<el-select v-model="queryParams.sex" placeholder="请选择用户性别" clearable>
|
||||
<el-option v-for="dict in sys_user_sex" :key="dict.value" :label="dict.label" :value="dict.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="会员等级">
|
||||
<el-select v-model="queryParams.levelId" placeholder="请选择状态" clearable>
|
||||
<el-form-item label="会员等级" prop="handlingStatus">
|
||||
<el-select v-model="queryParams.handlingStatus" placeholder="请选择状态" clearable>
|
||||
<el-option v-for="dict in dy_banned_handling_status" :key="dict.id" :label="dict.levelName" :value="dict.id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
@ -43,25 +42,25 @@
|
||||
</template>
|
||||
|
||||
<el-table v-loading="loading" :data="bannedList">
|
||||
<el-table-column v-if="queryParams.type == 1" label="笔记名称" align="center" prop="contentId">
|
||||
<el-table-column v-if="queryParams.type == 1" label="笔记名称" align="center" prop="contentId" >
|
||||
<template #default="scope">
|
||||
<el-button type="primary" link>{{ scope.row.contentName }}</el-button>
|
||||
<el-button type="primary" link>查看笔记</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="queryParams.type == 2" label="活动名称" align="center" prop="contentId">
|
||||
<el-table-column v-if="queryParams.type == 2" label="活动名称" align="center" prop="contentId" >
|
||||
<template #default="scope">
|
||||
<el-button type="primary" link>{{ scope.row.contentName }}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="queryParams.type == 3" label="评论内容" align="center" prop="contentId">
|
||||
<template #default="scope">
|
||||
<el-button type="primary" link>{{ scope.row.contentName }}</el-button>
|
||||
<el-button type="primary" link>查看活动</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column v-if="queryParams.type == 3" label="评论内容" align="center" prop="contentId" >
|
||||
<template #default="scope">
|
||||
<el-button type="primary" link>查看笔记</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="用户ID" align="center" prop="reportUserId" />
|
||||
<el-table-column label="会员等级" align="center" prop="userLevel">
|
||||
<template #default="scope">
|
||||
<div>{{ formatlevel(scope.row.levelId) }}</div>
|
||||
<div>{{formatlevel(scope.row.levelId)}}</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="昵称" align="center" prop="nickName" />
|
||||
@ -76,7 +75,7 @@
|
||||
<el-table-column label="举报时间" align="center" prop="createTime" width="200px" />
|
||||
<el-table-column label="操作时间" align="center" prop="updateTime" width="200px" />
|
||||
<el-table-column label="操作人" align="center" prop="updateName" width="150px" />
|
||||
<el-table-column label="状态" align="center" prop="handlingStatus">
|
||||
<el-table-column label="状态" align="center" prop="handlingStatus" >
|
||||
<template #default="scope">
|
||||
<el-tag v-if="scope.row.handlingStatus == 0" type="info">未处理</el-tag>
|
||||
<el-tag v-if="scope.row.handlingStatus == 1" type="warning">已处理</el-tag>
|
||||
@ -85,15 +84,7 @@
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="150px">
|
||||
<template #default="scope">
|
||||
<el-button v-hasPermi="['manage:report:edit']" link type="primary" @click="handleUpdate(scope.row)">封禁</el-button>
|
||||
<el-button v-if="queryParams.type == 1" v-hasPermi="['manage:report:remove']" link type="primary" @click="handleDelete(scope.row)"
|
||||
>删除笔记</el-button
|
||||
>
|
||||
<el-button v-if="queryParams.type == 2" v-hasPermi="['manage:report:remove']" link type="primary" @click="handleDelete(scope.row)"
|
||||
>删除活动</el-button
|
||||
>
|
||||
<el-button v-if="queryParams.type == 3" v-hasPermi="['manage:report:remove']" link type="primary" @click="handleDelete(scope.row)"
|
||||
>删除评论</el-button
|
||||
>
|
||||
<el-button v-hasPermi="['manage:report:remove']" link type="primary" @click="handleDelete(scope.row)">删除{{ radio1 }}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@ -133,7 +124,6 @@
|
||||
<script setup name="Banned" lang="ts">
|
||||
import { listBanned, getBanned, delBanned, addBanned, updateBanned, userLevelall } from '@/api/manage/banned';
|
||||
import { BannedVO, BannedQuery, BannedForm } from '@/api/manage/banned/types';
|
||||
import { delNotebook } from '@/api/manage/notebook';
|
||||
|
||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||
const { dy_banned_handling_method, sys_user_sex, dy_banned_ban_reason, dy_user_ban_days } = toRefs<any>(
|
||||
@ -181,7 +171,6 @@ const data = reactive<PageData<BannedForm, BannedQuery>>({
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
nickName: undefined,
|
||||
contentId: undefined,
|
||||
reportUserId: undefined,
|
||||
reportReason: undefined,
|
||||
@ -240,10 +229,6 @@ const handleQuery = () => {
|
||||
/** 重置按钮操作 */
|
||||
const resetQuery = () => {
|
||||
queryFormRef.value?.resetFields();
|
||||
queryParams.value.nickName = '';
|
||||
queryParams.value.sex = '';
|
||||
queryParams.value.handlingStatus = '';
|
||||
queryParams.value.levelId = '';
|
||||
handleQuery();
|
||||
};
|
||||
|
||||
@ -290,11 +275,9 @@ const submitForm = () => {
|
||||
|
||||
/** 删除按钮操作 */
|
||||
const handleDelete = async (row?: BannedVO) => {
|
||||
const _ids = row?.contentId;
|
||||
const _idsname = row?.contentName;
|
||||
const text = queryParams.value.type == 1 ? '笔记名称为“' : queryParams.value.type == 2 ? '活动名称为“' : '评论内容为“';
|
||||
await proxy?.$modal.confirm('是否确认删除' + text + _idsname + '"的数据项?').finally(() => (loading.value = false));
|
||||
await delNotebook(_ids);
|
||||
const _ids = row?.id || ids.value;
|
||||
await proxy?.$modal.confirm('是否确认删除举报编号为"' + _ids + '"的数据项?').finally(() => (loading.value = false));
|
||||
await delBanned(_ids);
|
||||
proxy?.$modal.msgSuccess('删除成功');
|
||||
await getList();
|
||||
};
|
||||
|
@ -1,34 +1,35 @@
|
||||
<!-- 路线导航管理列表 -->
|
||||
<template>
|
||||
<div class="p-2">
|
||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter"
|
||||
:leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||
<div v-show="showSearch" id="search_div" class="mb-[10px]">
|
||||
<el-card shadow="hover">
|
||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true" label-width="70px">
|
||||
<el-form-item label="线路标题" prop="">
|
||||
<el-input v-model="queryParams.title" class="inputWidth" placeholder="请输入线路标题" clearable @keyup.enter="handleQuery" />
|
||||
<el-input v-model="queryParams.title" class="inputWidth" placeholder="请输入线路标题" clearable
|
||||
@keyup.enter="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="发布状态" prop="">
|
||||
<el-select v-model="queryParams.status" class="inputWidth" placeholder="请选择发布状态" clearable>
|
||||
<el-option v-for="dict in note_publish_list" :key="dict.value" :label="dict.label" :value="dict.value" />
|
||||
<el-option v-for="dict in note_publish_list" :key="dict.value" :label="dict.label"
|
||||
:value="dict.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
||||
<el-button v-hasPermi="['system:Route:add']" type="primary" plain icon="Plus" @click="handleAdd">新增</el-button>
|
||||
<el-button v-hasPermi="['system:Route:add']" type="primary" plain icon="Plus"
|
||||
@click="handleAdd">新增</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
</div>
|
||||
</transition>
|
||||
|
||||
<el-table v-loading="loading" :height="autoTableHeight" :data="RouteList" border @selection-change="handleSelectionChange">
|
||||
<el-table-column fixed label="序号" align="center" width="80">
|
||||
<template #default="scope">
|
||||
<span>{{ (queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1 }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table v-loading="loading" :height="autoTableHeight" :data="RouteList" border
|
||||
@selection-change="handleSelectionChange">
|
||||
<el-table-column label="ID" align="center" prop="id" width="180px" fixed />
|
||||
<el-table-column label="线路标题" align="center" prop="title" width="150px" show-overflow-tooltip fixed />
|
||||
<el-table-column label="线路封面" align="center" prop="" />
|
||||
<el-table-column label="线路标签" align="center" prop="tagId" width="150px" show-overflow-tooltip>
|
||||
@ -79,40 +80,20 @@
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="160px" fixed="right">
|
||||
<template #default="scope">
|
||||
<el-button
|
||||
v-if="scope.row.status == 0 || scope.row.status == 1"
|
||||
v-hasPermi="['system:Route:edit']"
|
||||
link
|
||||
type="primary"
|
||||
@click="handleUpdate(scope.row)"
|
||||
>编辑</el-button
|
||||
>
|
||||
<el-button
|
||||
v-if="scope.row.status == 0 || scope.row.status == 1"
|
||||
v-hasPermi="['system:Route:remove']"
|
||||
link
|
||||
type="primary"
|
||||
@click="handleDelete(scope.row)"
|
||||
>删除</el-button
|
||||
>
|
||||
<el-button v-if="scope.row.status == 0" v-hasPermi="['system:Route:remove']" link type="primary" @click="savelistrow(scope.row)"
|
||||
>发布</el-button
|
||||
>
|
||||
<el-button v-if="scope.row.status == 3" v-hasPermi="['system:Route:remove']" link type="primary" @click="savelistrow(scope.row)"
|
||||
>撤销发布</el-button
|
||||
>
|
||||
<el-button v-if="scope.row.status == 0 || scope.row.status == 1" v-hasPermi="['system:Route:edit']" link
|
||||
type="primary" @click="handleUpdate(scope.row)">编辑</el-button>
|
||||
<el-button v-if="scope.row.status == 0 || scope.row.status == 1" v-hasPermi="['system:Route:remove']" link
|
||||
type="primary" @click="handleDelete(scope.row)">删除</el-button>
|
||||
<el-button v-if="scope.row.status == 0" v-hasPermi="['system:Route:remove']" link type="primary"
|
||||
@click="savelistrow(scope.row)">发布</el-button>
|
||||
<el-button v-if="scope.row.status == 3" v-hasPermi="['system:Route:remove']" link type="primary"
|
||||
@click="savelistrow(scope.row)">撤销发布</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<pagination
|
||||
v-show="total > 0"
|
||||
id="table_page"
|
||||
v-model:page="queryParams.pageNum"
|
||||
v-model:limit="queryParams.pageSize"
|
||||
:total="total"
|
||||
@pagination="getList"
|
||||
/>
|
||||
<pagination v-show="total > 0" id="table_page" v-model:page="queryParams.pageNum"
|
||||
v-model:limit="queryParams.pageSize" :total="total" @pagination="getList" />
|
||||
<!-- 添加或修改景点、租赁管理对话框 -->
|
||||
<el-dialog v-model="dialog.visible" :title="dialog.title" width="60%" append-to-body>
|
||||
<el-form ref="RouteFormRef" :model="form" :rules="rules" label-width="120px">
|
||||
@ -129,8 +110,9 @@
|
||||
<el-option v-for="item in sys_user_tagOptions" :key="item.id" :label="item.title" :value="item.id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="涉及的行政区域" prop="region">
|
||||
<el-cascader v-model="treevalue" :options="regiontree" :props="props" clearable placeholder="请选择涉及的行政区域" style="width: 400px" />
|
||||
<el-form-item label="涉及的行政区域" prop="treevalue">
|
||||
<el-cascader v-model="treevalue" :options="regiontree" :props="props" clearable placeholder="请选择涉及的行政区域"
|
||||
style="width: 400px" />
|
||||
</el-form-item>
|
||||
<div style="display: flex">
|
||||
<el-form-item label="行程天数" prop="routeDays">
|
||||
@ -194,13 +176,15 @@
|
||||
<el-input v-model="routeDetailsList.title" placeholder="请输入标题" style="width: 500px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="描述">
|
||||
<el-input v-model="routeDetailsList.description" placeholder="请输入描述" style="width: 500px" autosize type="textarea" />
|
||||
<el-input v-model="routeDetailsList.description" placeholder="请输入描述" style="width: 500px" autosize
|
||||
type="textarea" />
|
||||
</el-form-item>
|
||||
<el-form-item label="添加地点">
|
||||
<el-button type="primary" @click="addjingdain">添加景点</el-button>
|
||||
</el-form-item>
|
||||
<div v-for="(item, index) in routeDetailsList.lowerList" class="articlelist">
|
||||
<CircleClose v-if="index != 0" style="width: 2em; height: 2em; position: relative; left: 98%" @click="delLowerList(index)" />
|
||||
<CircleClose v-if="index != 0" style="width: 2em; height: 2em; position: relative; left: 98%"
|
||||
@click="delLowerList(index)" />
|
||||
<el-form-item label="添加地点">
|
||||
<el-select v-model="item.articleId" placeholder="请选择标记地点" size="large" style="width: 500px">
|
||||
<el-option v-for="item in sys_user_contentOptions" :key="item.id" :label="item.name" :value="item.id" />
|
||||
@ -399,7 +383,7 @@ const data = reactive<PageData<RouteForm, RouteQuery>>({
|
||||
routeDriveHour: [{ required: true, message: '行驶时长', trigger: 'blur' }],
|
||||
routeMileage: [{ required: true, message: '行程里数', trigger: 'blur' }],
|
||||
routeDays: [{ required: true, message: '行程天数', trigger: 'blur' }],
|
||||
region: [{ required: true, message: '涉及的行政区不能为空', trigger: 'blur' }],
|
||||
region: [{ required: true, message: '涉及的行政区', trigger: 'blur' }],
|
||||
tagId: [{ required: true, message: '标签不能为空', trigger: 'blur' }],
|
||||
title: [{ required: true, message: '线路标题', trigger: 'blur' }]
|
||||
}
|
||||
@ -526,9 +510,9 @@ const formatTag = (tagId: string | null) => {
|
||||
// }
|
||||
for (let i = 0; i < sys_user_tagOptions.value.length; i++) {
|
||||
const element = sys_user_tagOptions.value[i];
|
||||
if (tagId != null) {
|
||||
let filteredArray = tagId.split(',').filter((item) => item == element.id);
|
||||
if (filteredArray.length > 0) {
|
||||
if (tagId!=null) {
|
||||
let filteredArray = tagId.split(',').filter((item) => item==element.id);
|
||||
if (filteredArray.length>0) {
|
||||
tagString += ',' + element.title;
|
||||
}
|
||||
}
|
||||
@ -552,7 +536,7 @@ const handleUpdate = async (row?: RouteVO) => {
|
||||
/** 提交按钮 */
|
||||
const submitForm = async (type) => {
|
||||
form.value.tagId = tagvalue?.value.length != 0 ? tagvalue?.value.join(',') : '';
|
||||
form.value.region = treevalue?.value.length ==0?'': JSON.stringify(treevalue?.value);
|
||||
form.value.region = treevalue?.value ? JSON.stringify(treevalue?.value) : '';
|
||||
form.value.status = Number(type);
|
||||
form.value.routeDetailsList = bookrouteDetailsList.value;
|
||||
if (type == 1) {
|
||||
|
@ -63,11 +63,6 @@
|
||||
|
||||
<el-table :height="autoTableHeight" v-loading="loading" :data="articleList"
|
||||
@selection-change="handleSelectionChange" border>
|
||||
<el-table-column fixed label="序号" align="center" width="80">
|
||||
<template #default="scope">
|
||||
<span>{{ (queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1 }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="ID" align="center" prop="id" fixed v-if="false" width="50px" />
|
||||
<el-table-column label="景点名称" align="center" prop="name" fixed v-if="queryParams.type == '0'" width="180px" />
|
||||
<el-table-column label="商家名称" align="center" prop="name" fixed v-if="queryParams.type != '0'" width="180px" />
|
||||
@ -110,37 +105,34 @@
|
||||
<el-button link type="primary" @click="handleDetail(scope.row)">查看</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="相关笔记" align="center" prop="recommendNotebookCount">
|
||||
<el-table-column label="喜欢数量" align="center" prop="likeCount" />
|
||||
<el-table-column label="收藏数量" align="center" prop="collectionCount" />
|
||||
<el-table-column label="相关笔记" align="center" prop="pubNotebookCount">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" v-if="scope.row.status!==3" @click="handleNote(scope.row)">1{{
|
||||
scope.row.pubNotebookCount }}</el-button>
|
||||
<el-button link type="primary" v-if="scope.row.status!==3" @click="handleNote(scope.row)">11{{
|
||||
scope.row.noteNumber }}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column :label="queryParams.type == '0' ?'景点评论数':queryParams.type == '1' ?'租车评论数':'游艇评论数'" align="center"
|
||||
prop="commentCount" width="90px">
|
||||
<el-table-column label="笔记评论数" align="center" prop="notebookCommentCount" width="90px">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" v-if="scope.row.status!==3" @click="handleNote(scope.row)">1{{
|
||||
scope.row.notebookCommentCount }}</el-button>
|
||||
<el-button link type="primary" v-if="scope.row.status!==3" @click="handleNote(scope.row)">11{{
|
||||
scope.row.noteNumber }}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column :label="queryParams.type == '0' ?'景点喜欢数':queryParams.type == '1' ?'租车喜欢数':'游艇喜欢数'" align="center"
|
||||
prop="agreeCount" width="90" />
|
||||
<el-table-column :label="queryParams.type == '0' ?'景点收藏数':queryParams.type == '1' ?'租车收藏数':'游艇收藏数'" align="center"
|
||||
prop="collectionCount" width="90" />
|
||||
<!-- <el-table-column label="点赞数" align="center" prop="notebookAgreeCount" width="90px">
|
||||
<el-table-column label="笔记点赞数" align="center" prop="notebookAgreeCount" width="90px">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" v-if="scope.row.status!==3" @click="handleNote(scope.row)">1{{
|
||||
scope.row.notebookAgreeCount }}</el-button>
|
||||
<el-button link type="primary" v-if="scope.row.status!==3" @click="handleNote(scope.row)">11{{
|
||||
scope.row.noteNumber }}</el-button>
|
||||
</template>
|
||||
</el-table-column> -->
|
||||
</el-table-column>
|
||||
<!-- 0-未发布 1-审核中 2-发布 -->
|
||||
<el-table-column label="发布状态" align="center" prop="status" width="100">
|
||||
<template #default="scope">
|
||||
<!-- <span>{{ scope.row.status == 0 ? '未发布' : scope.row.status == 1 ? '审核中' : scope.row.status == 2 ? '已发布' : '草稿' }}</span> -->
|
||||
<el-tag v-if="scope.row.status == 0" type="info">未发布</el-tag>
|
||||
<el-tag v-if="scope.row.status == 1" type="success">审核中</el-tag>
|
||||
<el-tag v-if="scope.row.status == 2" type="primary">已发布</el-tag>
|
||||
<el-tag v-if="scope.row.status == 3" type="warning">草稿</el-tag>
|
||||
<el-tag v-if="scope.row.status == 1" type="warning">审核中</el-tag>
|
||||
<el-tag v-if="scope.row.status == 2" type="success">已发布</el-tag>
|
||||
<el-tag v-if="scope.row.status == 3" type="danger">草稿</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作人" align="center" prop="updateByName" width="120px" />
|
||||
@ -234,8 +226,7 @@
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="标签" prop="tagId_copy">
|
||||
<el-select class="inputWidth" v-model="form.tagId_copy" multiple filterable placeholder="请选择标签" clearable
|
||||
@visible-change="getTagList">
|
||||
<el-select class="inputWidth" v-model="form.tagId_copy" multiple filterable placeholder="请选择标签" clearable>
|
||||
<el-option v-for="dict in sys_user_tagOptions" :key="dict.id" :label="dict.title"
|
||||
:value="String(dict.id)" />
|
||||
</el-select>
|
||||
@ -253,19 +244,12 @@
|
||||
<el-col :span="24">
|
||||
<el-form-item label="地理位置" prop="introduce">
|
||||
<!-- <el-input v-model="searchLocation" type="text" placeholder="请输入地址信息" clearable /> -->
|
||||
<!-- <el-input v-model="searchLocation" placeholder="请输入地址信息" class="input-with-select"
|
||||
<el-input v-model="searchLocation" placeholder="请输入地址信息" class="input-with-select"
|
||||
@keyup.enter="debouncedSearch(searchLocation)">
|
||||
<template #append>
|
||||
<el-button @click="debouncedSearch(searchLocation)" :icon="Search" />
|
||||
</template>
|
||||
</el-input> -->
|
||||
<el-select v-model="searchLocation" filterable remote reserve-keyword clearable placeholder="请输入地址信息"
|
||||
@change="selectChnange" :remote-method="remoteMethod">
|
||||
<el-option v-for="item in locationOptions" :key="item.id"
|
||||
:label="item.title + '      ' + item.province+' - '+item.city"
|
||||
:value="item.province+item.city+item.title" />
|
||||
<!-- :value="item.ad_info.province+item.ad_info.city+item.title" /> -->
|
||||
</el-select>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
<tlbs-map style="margin-left: 80px" ref="map" api-key="
|
||||
6XFBZ-SAVLT-JGIX2-VOLMK-6S2H3-XUBGO" :center="center" :zoom="zoom" :control="control" @click="onClick">
|
||||
@ -414,12 +398,9 @@
|
||||
</template>
|
||||
</el-dialog>
|
||||
<!-- 相关笔记 -->
|
||||
<el-dialog title="相关笔记" v-model="noteListDialog.visible" width="1200px" append-to-body>
|
||||
<noteList :autoTableHeight="300" :sys_user_tagOptions="sys_user_tagOptions" parentName="scenic"
|
||||
:articleList="noteListDialog.articleList" :type="queryParams.type" :id="form.id"></noteList>
|
||||
<pagination v-show="noteListDialog.total > 0" :total="noteListDialog.total"
|
||||
v-model:page="noteListDialog.params.pageNum" v-model:limit="noteListDialog.params.pageSize"
|
||||
@pagination="handleNote" />
|
||||
<el-dialog title="相关笔记" v-model="noteBookVisible" width="1200px" append-to-body>
|
||||
<noteList :autoTableHeight="300" :sys_user_tagOptions="sys_user_tagOptions" :noteBookTagIds="noteBookTagIds"
|
||||
parentName="scenic" :type="queryParams.type" :id="form.id"></noteList>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button @click="cancel('noteBookVisible')">关 闭</el-button>
|
||||
@ -431,7 +412,7 @@
|
||||
|
||||
<script setup name="Article" lang="ts">
|
||||
import { listTag,tagAll } from '@/api/manage/tag';
|
||||
import { listArticle, getArticle, delArticle, addArticle, updateArticle, listByTagIdNotebook,recommend } from '@/api/manage/scenic';
|
||||
import { listArticle, getArticle, delArticle, addArticle, updateArticle, listByTagIdNotebook } from '@/api/manage/scenic';
|
||||
import { ArticleVO, ArticleQuery, ArticleForm } from '@/api/manage/scenic/types';
|
||||
import { useRouter } from 'vue-router';
|
||||
import { getToken } from '@/utils/auth';
|
||||
@ -461,7 +442,6 @@ const dialog = reactive<DialogOption>({
|
||||
title: '',
|
||||
type:''
|
||||
});
|
||||
const locationOptions = ref([]); //腾讯地图返回的搜索地址列表
|
||||
const noteLists = ref([]); // 相关笔记列表
|
||||
const previewRef = ref(null);
|
||||
const previewVisible = ref(false); //预览弹层
|
||||
@ -622,37 +602,6 @@ const getTag = async () => {
|
||||
const res = await tagAll();
|
||||
sys_user_tagOptions.value = res; //标签库
|
||||
};
|
||||
const getTagList = async (visible: boolean) => {
|
||||
if (visible) {
|
||||
getTag(); //标签库
|
||||
}
|
||||
}
|
||||
// 地理位置 输入实时搜索
|
||||
const remoteMethod = (query: string) => {
|
||||
if (query !== '') {
|
||||
// 调用腾讯地图API进行搜索,并展示在地图上
|
||||
// geocoder(query).then((result) => {
|
||||
// console.log(result);
|
||||
// });
|
||||
console.log(query);
|
||||
// jsonp(`https://apis.map.qq.com/ws/place/v1/search?key=${'6XFBZ-SAVLT-JGIX2-VOLMK-6S2H3-XUBGO'}&keyword=${encodeURI(query)}&boundary=nearby(20.018883,110.348801,1000)&output=jsonp`, {}).then((res) => {
|
||||
jsonp(`https://apis.map.qq.com/ws/place/v1/suggestion?key=${'6XFBZ-SAVLT-JGIX2-VOLMK-6S2H3-XUBGO'}&keyword=${encodeURI(query)}®ion=三亚市®ion_fix=0&output=jsonp`, {}).then((res) => {
|
||||
// if (res.region.title!=='海南省') {
|
||||
// proxy?.$modal.msgError('仅支持海南省地理位置');
|
||||
// return
|
||||
// }
|
||||
if (res.status == 0) {
|
||||
locationOptions.value = res.data;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
// 选择地理位置 下拉框值变化
|
||||
const selectChnange = (val:string) => {
|
||||
if (val) {
|
||||
debouncedSearch(searchLocation.value)
|
||||
}
|
||||
}
|
||||
//输入位置,搜索位置
|
||||
const performSearch = async (text) => {
|
||||
// 这里简单模拟延迟,模拟真实的异步请求耗时
|
||||
@ -661,20 +610,22 @@ const performSearch = async (text) => {
|
||||
if (text === '') {
|
||||
console.log('搜索内容为空');
|
||||
} else {
|
||||
// console.log('搜索内容为:', text);
|
||||
console.log('搜索内容为:', text);
|
||||
// 调用腾讯地图API进行搜索,并展示在地图上
|
||||
// geocoder(text).then((result) => {
|
||||
// console.log(result);
|
||||
// });
|
||||
jsonp(`https://apis.map.qq.com/ws/geocoder/v1/?address=${text}&key=${'6XFBZ-SAVLT-JGIX2-VOLMK-6S2H3-XUBGO'}&output=jsonp`, {}).then((data) => {
|
||||
// console.log(data);
|
||||
console.log(data);
|
||||
if (data.status == 0) {
|
||||
center.value.lat = data.result.location.lat;
|
||||
center.value.lng = data.result.location.lng;
|
||||
form.value.address =
|
||||
data.result.address_components.province +
|
||||
data.result.address_components.city +
|
||||
data.result.address_components.district +
|
||||
data.result.address_components.street +
|
||||
data.result.address_components.street_number;
|
||||
data.result.address_components.province +
|
||||
data.result.address_components.city +
|
||||
data.result.address_components.district +
|
||||
data.result.address_components.street +
|
||||
data.result.address_components.street_number;
|
||||
form.value.latitude = data.result.location.lat;
|
||||
form.value.longitude = data.result.location.lng;
|
||||
form.value.region = data.result.ad_info.adcode; //行政区划编码
|
||||
@ -682,7 +633,6 @@ const performSearch = async (text) => {
|
||||
|
||||
// form.value.province = data.result.address_components.province;
|
||||
// form.value.city = data.result.address_components.city;
|
||||
center.value = { lat: data.result.location.lat, lng: data.result.location.lng };
|
||||
geometries.value = [{ styleId: 'marker', position: { lat: data.result.location.lat, lng: data.result.location.lng } }];
|
||||
} else if (data.status == 348) {
|
||||
//地址信息不明确,需弹出提示
|
||||
@ -712,8 +662,9 @@ const onClick = (e: any) => {
|
||||
// form.value.city = data.result.address_component.city;
|
||||
form.value.region = data.result.ad_info.adcode; //行政区划编码
|
||||
form.value.regionCode = data.result.ad_info.adcode; //行政区划编码
|
||||
center.value = { lat: data.result.location.lat, lng: data.result.location.lng };
|
||||
searchLocation.value = data.result.formatted_addresses?.recommend;
|
||||
center.value.lat = data.result.location.lat;
|
||||
center.value.lng = data.result.location.lng;
|
||||
searchLocation.value = data.result.formatted_addresses.recommend;
|
||||
geometries.value = [{ styleId: 'marker', position: { lat: data.result.location.lat, lng: data.result.location.lng } }];
|
||||
}
|
||||
}
|
||||
@ -728,7 +679,6 @@ const getList = async () => {
|
||||
queryParams.value.tagId = queryParams.value.tagId.toString();
|
||||
}
|
||||
const res = await listArticle(queryParams.value).finally(() => (loading.value = false));
|
||||
articleList.value=[];
|
||||
res.rows.forEach((element: any) => {
|
||||
if (element.region == null) {
|
||||
element.region = element.city;
|
||||
@ -752,8 +702,6 @@ const cancel = (type: string) => {
|
||||
dialog.visible = false;
|
||||
noteBookVisible.value = false;
|
||||
noteBookTagIds.value = ''; // 清空标签
|
||||
noteListDialog.visible = false;
|
||||
noteListDialog.params.pageNum=1;
|
||||
};
|
||||
|
||||
/** 表单重置 */
|
||||
@ -884,26 +832,11 @@ const handleDetail = async (row?: ArticleVO) => {
|
||||
*/
|
||||
const noteBookVisible = ref(false);
|
||||
const noteBookTagIds = ref(''); //相关笔记的标签id
|
||||
const noteListDialog = reactive({
|
||||
visible: false,
|
||||
total: 0,
|
||||
articleList:[],
|
||||
params:{
|
||||
articleId: null,
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
}
|
||||
});
|
||||
// 相关笔记 请求列表
|
||||
const handleNote = async (row?: ArticleVO) => {
|
||||
// noteBookTagIds.value = '';
|
||||
// noteBookTagIds.value = row?.tagId as string;
|
||||
if (row.id) {
|
||||
noteListDialog.params.articleId = row?.id;
|
||||
}
|
||||
let res = await recommend(noteListDialog.params);
|
||||
noteListDialog.articleList=res.rows;
|
||||
noteListDialog.visible = true;
|
||||
noteBookTagIds.value = '';
|
||||
noteBookTagIds.value = row?.tagId as string;
|
||||
noteBookVisible.value = true;
|
||||
console.log(row.tagId);
|
||||
};
|
||||
/** 新增景点,商家提交按钮 */
|
||||
const submitForm = async (type: string) => {
|
||||
@ -920,8 +853,7 @@ const submitForm = async (type: string) => {
|
||||
if (form.value.id) {
|
||||
await updateArticle(form.value).finally(() => (buttonLoading.value = false));
|
||||
} else {
|
||||
let res = await addArticle(form.value).finally(() => (buttonLoading.value = false));
|
||||
form.value.id = res.msg;
|
||||
await addArticle(form.value).finally(() => (buttonLoading.value = false));
|
||||
}
|
||||
proxy?.$modal.msgSuccess('操作成功');
|
||||
// dialog.visible = false;
|
||||
|
@ -29,11 +29,6 @@
|
||||
|
||||
<el-table v-loading="loading" :height="autoTableHeight" :data="tagList" @selection-change="handleSelectionChange">
|
||||
<!-- <el-table-column type="selection" width="55" align="center" /> -->
|
||||
<el-table-column fixed label="序号" align="center" width="80">
|
||||
<template #default="scope">
|
||||
<span>{{ (queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1 }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="标签ID" align="center" prop="id" v-if="false" width="70px" />
|
||||
<el-table-column label="标签名称" align="center" prop="title" />
|
||||
<el-table-column label="排序" align="center" prop="sort" />
|
||||
@ -101,8 +96,7 @@ const tagFormRef = ref<ElFormInstance>();
|
||||
|
||||
const dialog = reactive<DialogOption>({
|
||||
visible: false,
|
||||
title: '',
|
||||
type:''
|
||||
title: ''
|
||||
});
|
||||
|
||||
const initFormData: TagForm = {
|
||||
@ -114,7 +108,7 @@ const data = reactive<PageData<TagForm, TagQuery>>({
|
||||
form: { ...initFormData },
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 20,
|
||||
pageSize: 10,
|
||||
title: undefined,
|
||||
sort: undefined,
|
||||
params: {}
|
||||
|
@ -52,9 +52,7 @@
|
||||
</el-table-column>
|
||||
<el-table-column label="状态" align="center" prop="status">
|
||||
<template #default="scope">
|
||||
<!-- <dict-tag :options="dy_user_level_status" :value="scope.row.status" /> -->
|
||||
<el-tag v-if="scope.row.status == 0" type="info">未发布</el-tag>
|
||||
<el-tag v-if="scope.row.status == 1" type="primary">已发布</el-tag>
|
||||
<dict-tag :options="dy_user_level_status" :value="scope.row.status" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column label="等级名称" align="center" prop="levelName" />
|
||||
@ -144,7 +142,7 @@ const data = reactive<PageData<UserLevelForm, UserLevelQuery>>({
|
||||
form: { ...initFormData },
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 20,
|
||||
pageSize: 10,
|
||||
levelName: undefined,
|
||||
status: undefined,
|
||||
score: undefined,
|
||||
|
@ -1,4 +1,3 @@
|
||||
<!-- 积分记录 -->
|
||||
<template>
|
||||
<div class="p-2">
|
||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter"
|
||||
@ -38,28 +37,30 @@
|
||||
</div>
|
||||
</transition>
|
||||
|
||||
<el-table v-loading="loading" :height="autoTableHeight" :data="userScoreList"
|
||||
@selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="用户昵称" align="center" prop="nickName" />
|
||||
<el-table-column label="积分获得时间" align="center" prop="updateTime" />
|
||||
<el-table-column label="获得类型" align="center" prop="bizType">
|
||||
<template #default="scope">
|
||||
<dict-tag :options="dy_source" :value="scope.row.bizType" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作内容" align="center" prop="bizName" />
|
||||
<!-- <el-table-column label="业务id" align="center" prop="sourceId" /> -->
|
||||
<!-- <el-table-column label="来源类型(0=签到 1=发笔记 2=扔瓶子 3=评论 4=点赞 5=分享 6=收藏 7=地图点亮) " align="center" prop="source" /> -->
|
||||
<el-table-column label="积分" align="center" prop="score">
|
||||
<template #default="scope">
|
||||
<span>{{ scope.row.score > 0 ? '+' + scope.row.score+' 积分' : scope.row.score}}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-card shadow="never">
|
||||
<el-table v-loading="loading" :height="autoTableHeight" :data="userScoreList"
|
||||
@selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="用户昵称" align="center" prop="nickName" />
|
||||
<el-table-column label="积分获得时间" align="center" prop="updateTime" />
|
||||
<el-table-column label="获得类型" align="center" prop="bizType">
|
||||
<template #default="scope">
|
||||
<dict-tag :options="dy_source" :value="scope.row.bizType" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作内容" align="center" prop="bizName" />
|
||||
<!-- <el-table-column label="业务id" align="center" prop="sourceId" /> -->
|
||||
<!-- <el-table-column label="来源类型(0=签到 1=发笔记 2=扔瓶子 3=评论 4=点赞 5=分享 6=收藏 7=地图点亮) " align="center" prop="source" /> -->
|
||||
<el-table-column label="积分" align="center" prop="score">
|
||||
<template #default="scope">
|
||||
<span>{{ scope.row.score > 0 ? '+' + scope.row.score+' 积分' : scope.row.score}}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<pagination v-show="total > 0" id="table_page" :total="total" v-model:page="queryParams.pageNum"
|
||||
v-model:limit="queryParams.pageSize" @pagination="getList" />
|
||||
<pagination v-show="total > 0" id="table_page" :total="total" v-model:page="queryParams.pageNum"
|
||||
v-model:limit="queryParams.pageSize" @pagination="getList" />
|
||||
</el-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
@ -72,21 +72,21 @@
|
||||
删除
|
||||
</el-button>
|
||||
</el-col>
|
||||
<!-- <el-col :span="1.5">-->
|
||||
<!-- <el-dropdown class="mt-[1px]">-->
|
||||
<!-- <el-button plain type="info">-->
|
||||
<!-- 更多-->
|
||||
<!-- <el-icon class="el-icon--right"><arrow-down /></el-icon-->
|
||||
<!-- ></el-button>-->
|
||||
<!-- <template #dropdown>-->
|
||||
<!-- <el-dropdown-menu>-->
|
||||
<!-- <el-dropdown-item icon="Download" @click="importTemplate">下载模板</el-dropdown-item>-->
|
||||
<!-- <el-dropdown-item icon="Top" @click="handleImport"> 导入数据</el-dropdown-item>-->
|
||||
<!-- <el-dropdown-item icon="Download" @click="handleExport"> 导出数据</el-dropdown-item>-->
|
||||
<!-- </el-dropdown-menu>-->
|
||||
<!-- </template>-->
|
||||
<!-- </el-dropdown>-->
|
||||
<!-- </el-col>-->
|
||||
<el-col :span="1.5">
|
||||
<el-dropdown class="mt-[1px]">
|
||||
<el-button plain type="info">
|
||||
更多
|
||||
<el-icon class="el-icon--right"><arrow-down /></el-icon
|
||||
></el-button>
|
||||
<template #dropdown>
|
||||
<el-dropdown-menu>
|
||||
<el-dropdown-item icon="Download" @click="importTemplate">下载模板</el-dropdown-item>
|
||||
<el-dropdown-item icon="Top" @click="handleImport"> 导入数据</el-dropdown-item>
|
||||
<el-dropdown-item icon="Download" @click="handleExport"> 导出数据</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</template>
|
||||
</el-dropdown>
|
||||
</el-col>
|
||||
<right-toolbar v-model:showSearch="showSearch" :columns="columns" :search="true" @query-table="getList"></right-toolbar>
|
||||
</el-row>
|
||||
</template>
|
||||
|
Loading…
Reference in New Issue
Block a user