Compare commits
No commits in common. "4d0e340fee5493c5eae1657aba1eb2a80100e977" and "0a81cadeb2f1c19a6bc15b39ecde3992a6072145" have entirely different histories.
4d0e340fee
...
0a81cadeb2
src
api/manage
assets/images
components
Editor
Map
activitylink
commentRows
note
noteList
partyList
views
index.vue
manage
activity
articleManage
bannerManage
dyUser
hotel
ipImage
mkConfig
mkJigsaw
mkPostcard
noteManage
orders
product
productCategory
report
route
scenic
tag
userLevel
userScore
system/user
@ -48,7 +48,6 @@ export interface BannedVO {
|
|||||||
* 状态(0=已发布,1=已下架)
|
* 状态(0=已发布,1=已下架)
|
||||||
*/
|
*/
|
||||||
handlingStatus: number;
|
handlingStatus: number;
|
||||||
nickName?: string | number;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 1=用户,2=笔记,3=活动,4=评论
|
* 1=用户,2=笔记,3=活动,4=评论
|
||||||
@ -107,7 +106,6 @@ export interface BannedForm extends BaseEntity {
|
|||||||
* 状态(0=已发布,1=已下架)
|
* 状态(0=已发布,1=已下架)
|
||||||
*/
|
*/
|
||||||
handlingStatus?: number;
|
handlingStatus?: number;
|
||||||
nickName?: string | number;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 1=用户,2=笔记,3=活动,4=评论
|
* 1=用户,2=笔记,3=活动,4=评论
|
||||||
@ -122,7 +120,6 @@ export interface BannedQuery extends PageQuery {
|
|||||||
* 被举报内容id
|
* 被举报内容id
|
||||||
*/
|
*/
|
||||||
contentId?: string | number;
|
contentId?: string | number;
|
||||||
nickName?: string | number;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 被举报用户ID
|
* 被举报用户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
|
* @param id
|
||||||
*/
|
*/
|
||||||
export const tagall = () => {
|
export const tagall = (): AxiosPromise<NotebookVO> => {
|
||||||
return request({
|
return request({
|
||||||
url: '/manage/tag/all',
|
url: '/manage/tag/all',
|
||||||
method: 'get'
|
method: 'get'
|
||||||
@ -75,7 +75,7 @@ export const tagall = () => {
|
|||||||
* 查询景点
|
* 查询景点
|
||||||
* @param query
|
* @param query
|
||||||
*/
|
*/
|
||||||
export const contentall = (query?: any) => {
|
export const contentall = (query?: NotebookQuery): AxiosPromise<NotebookVO> => {
|
||||||
return request({
|
return request({
|
||||||
url: '/manage/content/all',
|
url: '/manage/content/all',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
|
@ -77,7 +77,7 @@ export const getRegionTree = (query?: RouteForm) => {
|
|||||||
* 住宿下拉列表
|
* 住宿下拉列表
|
||||||
* @param query
|
* @param query
|
||||||
*/
|
*/
|
||||||
export const hotelall = (query?: any) => {
|
export const hotelall = (query?: RouteForm) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/manage/hotel/all',
|
url: '/manage/hotel/all',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
|
@ -105,15 +105,3 @@ export const commentList = (query: any): AxiosPromise<ArticleVO[]> => {
|
|||||||
params: query
|
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 ![]() (image error) Size: 9.2 KiB |
Binary file not shown.
Before ![]() (image error) Size: 13 KiB |
Binary file not shown.
Before ![]() (image error) Size: 6.1 KiB |
Binary file not shown.
Before ![]() (image error) Size: 4.5 KiB |
Binary file not shown.
Before ![]() (image error) Size: 8.7 KiB |
Binary file not shown.
Before ![]() (image error) Size: 7.4 KiB |
@ -1,14 +1,28 @@
|
|||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<el-upload v-if="type === 'url'" :action="upload.url" :before-upload="handleBeforeUpload"
|
<el-upload
|
||||||
:on-success="handleUploadSuccess" :on-error="handleUploadError" class="editor-img-uploader" name="file"
|
v-if="type === 'url'"
|
||||||
:show-file-list="false" :headers="upload.headers">
|
: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>
|
<i ref="uploadRef"></i>
|
||||||
</el-upload>
|
</el-upload>
|
||||||
</div>
|
</div>
|
||||||
<div class="editor">
|
<div class="editor">
|
||||||
<quill-editor ref="quillEditorRef" v-model:content="content" content-type="html" :options="options" :style="styles"
|
<quill-editor
|
||||||
@text-change="(e: any) => $emit('update:modelValue', content)" />
|
ref="quillEditorRef"
|
||||||
|
v-model:content="content"
|
||||||
|
content-type="html"
|
||||||
|
:options="options"
|
||||||
|
:style="styles"
|
||||||
|
@text-change="(e: any) => $emit('update:modelValue', content)"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@ -88,7 +102,6 @@ const styles = computed(() => {
|
|||||||
if (props.height) {
|
if (props.height) {
|
||||||
style.height = `${props.height}px`;
|
style.height = `${props.height}px`;
|
||||||
}
|
}
|
||||||
style.width = '1000px';
|
|
||||||
return style;
|
return style;
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -153,96 +166,77 @@ const handleUploadError = (err: any) => {
|
|||||||
.editor-img-uploader {
|
.editor-img-uploader {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.editor,
|
.editor,
|
||||||
.ql-toolbar {
|
.ql-toolbar {
|
||||||
white-space: pre-wrap !important;
|
white-space: pre-wrap !important;
|
||||||
line-height: normal !important;
|
line-height: normal !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.quill-img {
|
.quill-img {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ql-snow .ql-tooltip[data-mode='link']::before {
|
.ql-snow .ql-tooltip[data-mode='link']::before {
|
||||||
content: '请输入链接地址:';
|
content: '请输入链接地址:';
|
||||||
}
|
}
|
||||||
|
|
||||||
.ql-snow .ql-tooltip.ql-editing a.ql-action::after {
|
.ql-snow .ql-tooltip.ql-editing a.ql-action::after {
|
||||||
border-right: 0;
|
border-right: 0;
|
||||||
content: '保存';
|
content: '保存';
|
||||||
padding-right: 0;
|
padding-right: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ql-snow .ql-tooltip[data-mode='video']::before {
|
.ql-snow .ql-tooltip[data-mode='video']::before {
|
||||||
content: '请输入视频地址:';
|
content: '请输入视频地址:';
|
||||||
}
|
}
|
||||||
|
|
||||||
.ql-snow .ql-picker.ql-size .ql-picker-label::before,
|
.ql-snow .ql-picker.ql-size .ql-picker-label::before,
|
||||||
.ql-snow .ql-picker.ql-size .ql-picker-item::before {
|
.ql-snow .ql-picker.ql-size .ql-picker-item::before {
|
||||||
content: '14px';
|
content: '14px';
|
||||||
}
|
}
|
||||||
|
|
||||||
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value='small']::before,
|
.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 {
|
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value='small']::before {
|
||||||
content: '10px';
|
content: '10px';
|
||||||
}
|
}
|
||||||
|
|
||||||
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value='large']::before,
|
.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 {
|
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value='large']::before {
|
||||||
content: '18px';
|
content: '18px';
|
||||||
}
|
}
|
||||||
|
|
||||||
.ql-snow .ql-picker.ql-size .ql-picker-label[data-value='huge']::before,
|
.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 {
|
.ql-snow .ql-picker.ql-size .ql-picker-item[data-value='huge']::before {
|
||||||
content: '32px';
|
content: '32px';
|
||||||
}
|
}
|
||||||
|
|
||||||
.ql-snow .ql-picker.ql-header .ql-picker-label::before,
|
.ql-snow .ql-picker.ql-header .ql-picker-label::before,
|
||||||
.ql-snow .ql-picker.ql-header .ql-picker-item::before {
|
.ql-snow .ql-picker.ql-header .ql-picker-item::before {
|
||||||
content: '文本';
|
content: '文本';
|
||||||
}
|
}
|
||||||
|
|
||||||
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value='1']::before,
|
.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 {
|
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value='1']::before {
|
||||||
content: '标题1';
|
content: '标题1';
|
||||||
}
|
}
|
||||||
|
|
||||||
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value='2']::before,
|
.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 {
|
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value='2']::before {
|
||||||
content: '标题2';
|
content: '标题2';
|
||||||
}
|
}
|
||||||
|
|
||||||
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value='3']::before,
|
.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 {
|
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value='3']::before {
|
||||||
content: '标题3';
|
content: '标题3';
|
||||||
}
|
}
|
||||||
|
|
||||||
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value='4']::before,
|
.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 {
|
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value='4']::before {
|
||||||
content: '标题4';
|
content: '标题4';
|
||||||
}
|
}
|
||||||
|
|
||||||
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value='5']::before,
|
.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 {
|
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value='5']::before {
|
||||||
content: '标题5';
|
content: '标题5';
|
||||||
}
|
}
|
||||||
|
|
||||||
.ql-snow .ql-picker.ql-header .ql-picker-label[data-value='6']::before,
|
.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 {
|
.ql-snow .ql-picker.ql-header .ql-picker-item[data-value='6']::before {
|
||||||
content: '标题6';
|
content: '标题6';
|
||||||
}
|
}
|
||||||
|
|
||||||
.ql-snow .ql-picker.ql-font .ql-picker-label::before,
|
.ql-snow .ql-picker.ql-font .ql-picker-label::before,
|
||||||
.ql-snow .ql-picker.ql-font .ql-picker-item::before {
|
.ql-snow .ql-picker.ql-font .ql-picker-item::before {
|
||||||
content: '标准字体';
|
content: '标准字体';
|
||||||
}
|
}
|
||||||
|
|
||||||
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value='serif']::before,
|
.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 {
|
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value='serif']::before {
|
||||||
content: '衬线字体';
|
content: '衬线字体';
|
||||||
}
|
}
|
||||||
|
|
||||||
.ql-snow .ql-picker.ql-font .ql-picker-label[data-value='monospace']::before,
|
.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 {
|
.ql-snow .ql-picker.ql-font .ql-picker-item[data-value='monospace']::before {
|
||||||
content: '等宽字体';
|
content: '等宽字体';
|
||||||
|
@ -33,7 +33,6 @@
|
|||||||
import { Search } from '@element-plus/icons-vue';
|
import { Search } from '@element-plus/icons-vue';
|
||||||
import { propTypes } from '@/utils/propTypes';
|
import { propTypes } from '@/utils/propTypes';
|
||||||
import { jsonp } from 'vue-jsonp';
|
import { jsonp } from 'vue-jsonp';
|
||||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
|
||||||
import { debounce } from '@/utils/debounce.js';
|
import { debounce } from '@/utils/debounce.js';
|
||||||
import { OssVO } from '@/api/system/oss/types';
|
import { OssVO } from '@/api/system/oss/types';
|
||||||
import { listByIds } from '@/api/system/oss';
|
import { listByIds } from '@/api/system/oss';
|
||||||
@ -94,7 +93,8 @@ const onClick = (e: any) => {
|
|||||||
// form.value.city = data.result.address_component.city;
|
// form.value.city = data.result.address_component.city;
|
||||||
// form.value.region = data.result.ad_info.adcode; //行政区划编码
|
// form.value.region = data.result.ad_info.adcode; //行政区划编码
|
||||||
form.value.regionCode = 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;
|
searchLocation.value = data.result.formatted_addresses.recommend;
|
||||||
geometries.value = [{ styleId: 'marker', position: { 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);
|
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) => {
|
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) {
|
if (data.status == 0) {
|
||||||
|
center.value.lat = data.result.location.lat;
|
||||||
|
center.value.lng = data.result.location.lng;
|
||||||
// form.value.address =
|
// form.value.address =
|
||||||
// data.result.address_components.province +
|
// data.result.address_components.province +
|
||||||
// data.result.address_components.city +
|
// data.result.address_components.city +
|
||||||
@ -130,9 +132,8 @@ const performSearch = async (text) => {
|
|||||||
// form.value.region = data.result.ad_info.adcode; //行政区划编码
|
// form.value.region = data.result.ad_info.adcode; //行政区划编码
|
||||||
// form.value.regionCode = 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;
|
// 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 } }];
|
geometries.value = [{ styleId: 'marker', position: { lat: data.result.location.lat, lng: data.result.location.lng } }];
|
||||||
console.log(form.value);
|
console.log(form.value);
|
||||||
emit('modelValue', 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;">
|
<div style="margin-right: 5px;">
|
||||||
{{ comment.nickName }}
|
{{ comment.nickName }}
|
||||||
</div>
|
</div>
|
||||||
<!-- <div v-if="comment.parentId" class="reply-to"></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-username">{{ comment.replyNickName }}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="user-details">
|
<div class="user-details">
|
||||||
@ -21,26 +21,21 @@
|
|||||||
<span class="ip-address">IP: {{ comment.address?comment.address:'未知' }}</span>
|
<span class="ip-address">IP: {{ comment.address?comment.address:'未知' }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="comment.daList && comment.daList.length" class="replies">
|
<!-- <div v-if="comment.replies && comment.replies.length" class="replies">
|
||||||
<div v-for="reply in comment.daList" :key="reply.id" class="reply-item">
|
<div v-for="reply in comment.replies" :key="reply.id" class="reply-item">
|
||||||
<div class="user-info">
|
<div class="user-info">
|
||||||
<!-- <img :src="reply.avatar" alt="" class="avatar"> -->
|
<img :src="reply.avatar" alt="回复用户昵称" class="avatar">
|
||||||
<image-preview :src="reply.avatar" :width="25" :height="25" />
|
<div class="user-details">
|
||||||
<div class="">
|
<div class="username">回复 {{ reply.username }}</div>
|
||||||
<div class="username">
|
<div class="comment-content">{{ reply.content }}</div>
|
||||||
<span>{{ reply.nickName }}</span>
|
<div class="comment-info">
|
||||||
<div class="reply-to"></div>
|
<span class="comment-time">{{ reply.time }}</span>
|
||||||
<span>{{ reply.replyNickName }}</span>
|
<span class="ip-address">IP: {{ reply.ipAddress }}</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>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div> -->
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<pagination v-show="total > 0" id="table_page" :total="total" v-model:page="queryParams.pageNum"
|
<pagination v-show="total > 0" id="table_page" :total="total" v-model:page="queryParams.pageNum"
|
||||||
@ -118,15 +113,13 @@ const getCommentList = async () => {
|
|||||||
.reply-to {
|
.reply-to {
|
||||||
width: 0;
|
width: 0;
|
||||||
height: 0;
|
height: 0;
|
||||||
|
margin-top: 5px;
|
||||||
border-top: 6px solid transparent;
|
border-top: 6px solid transparent;
|
||||||
/* 上边框透明 */
|
/* 上边框透明 */
|
||||||
border-bottom: 6px solid transparent;
|
border-bottom: 6px solid transparent;
|
||||||
/* 下边框透明 */
|
/* 下边框透明 */
|
||||||
border-left: 6px solid #999;
|
border-left: 6px solid #999;
|
||||||
/* 左边框为箭头颜色,这里设为黑色,可按需更改 */
|
/* 左边框为箭头颜色,这里设为黑色,可按需更改 */
|
||||||
|
|
||||||
margin: 0px 8px;
|
|
||||||
margin-top: 5px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.reply-to-username {
|
.reply-to-username {
|
||||||
@ -137,7 +130,6 @@ const getCommentList = async () => {
|
|||||||
|
|
||||||
.user-details {
|
.user-details {
|
||||||
margin-left: 35px;
|
margin-left: 35px;
|
||||||
}
|
|
||||||
|
|
||||||
.comment-content {
|
.comment-content {
|
||||||
color: #000;
|
color: #000;
|
||||||
@ -145,6 +137,7 @@ const getCommentList = async () => {
|
|||||||
padding: 3px 0px;
|
padding: 3px 0px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -152,15 +145,6 @@ const getCommentList = async () => {
|
|||||||
margin-left: 15px;
|
margin-left: 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.replies {
|
|
||||||
margin-left: 35px;
|
|
||||||
|
|
||||||
.reply-item {
|
|
||||||
margin-top: 5px;
|
|
||||||
padding: 5px 0px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#table_page {
|
#table_page {
|
||||||
height: 50px !important;
|
height: 50px !important;
|
||||||
margin-top: 10px !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>
|
<div>
|
||||||
<el-table :height="props.autoTableHeight" v-loading="loading" :data="props.articleList"
|
<el-table :height="props.autoTableHeight" v-loading="loading" :data="props.articleList"
|
||||||
@selection-change="handleSelectionChange" border>
|
@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="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="title" width="180px" />
|
||||||
<el-table-column label="笔记封面" align="center" prop="" width="80px" />
|
<el-table-column label="笔记封面" align="center" prop="" width="80px" />
|
||||||
<el-table-column label="标记地点" align="center" prop="location">
|
<el-table-column label="笔记类别" align="center" prop="" width="80px" />
|
||||||
<template #default="scope">
|
<el-table-column label="标记地点" align="center" prop="location" width="180px" />
|
||||||
<span>{{ formatlocation(scope.row.location) }}</span>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="标签" align="center" prop="">
|
<el-table-column label="标签" align="center" prop="">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ formatTag(scope.row.tagId.toString()) }}</span>
|
<span>{{ formatTag(scope.row.tagId.toString()) }}</span>
|
||||||
@ -28,16 +25,16 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="点赞数" align="center" prop="agreeCount" width="80px">
|
<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>
|
<el-button link type="primary" @click="handleComment(scope.row)">12</el-button>
|
||||||
</template> -->
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="发布状态" align="center" prop="">
|
<el-table-column label="发布状态" align="center" prop="">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span>{{ scope.row.status == 0 ? '未发布' : scope.row.status == 1 ? '审核中' : scope.row.status == 2 ? '已发布' : '草稿' }}</span>
|
<span>{{ scope.row.status == 0 ? '未发布' : scope.row.status == 1 ? '审核中' : scope.row.status == 2 ? '已发布' : '草稿' }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</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" prop="updateTime" width="180px" />
|
||||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"
|
||||||
v-if="props.parentName != 'dyUser' && props.parentName != 'scenic'">
|
v-if="props.parentName != 'dyUser' && props.parentName != 'scenic'">
|
||||||
@ -57,6 +54,8 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</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>
|
<el-dialog title="笔记详情" v-model="noteDetail.visible" width="500px" append-to-body>
|
||||||
<div>
|
<div>
|
||||||
@ -89,9 +88,6 @@
|
|||||||
import { ref, reactive, onMounted, nextTick } from 'vue';
|
import { ref, reactive, onMounted, nextTick } from 'vue';
|
||||||
import { string } from 'vue-types';
|
import { string } from 'vue-types';
|
||||||
import { listByTagIdNotebook } from '@/api/manage/scenic';
|
import { listByTagIdNotebook } from '@/api/manage/scenic';
|
||||||
import { tagall,contentall } from '@/api/manage/notebook';
|
|
||||||
import { hotelall } from '@/api/manage/route';
|
|
||||||
|
|
||||||
|
|
||||||
//导入父组件传递的值
|
//导入父组件传递的值
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
@ -111,10 +107,10 @@ const props = defineProps({
|
|||||||
type: String,
|
type: String,
|
||||||
default: () => ''
|
default: () => ''
|
||||||
},
|
},
|
||||||
// sys_user_tagOptions: {
|
sys_user_tagOptions: {
|
||||||
// type: Array,
|
type: Array,
|
||||||
// default: () => []
|
default: () => []
|
||||||
// }
|
}
|
||||||
});
|
});
|
||||||
const total = ref(0);
|
const total = ref(0);
|
||||||
const loading = ref(false);
|
const loading = ref(false);
|
||||||
@ -157,16 +153,14 @@ const handleComment = async (row: any) => {
|
|||||||
}
|
}
|
||||||
// 监听父组件传递的tagIds,当tagIds发生变化时,重新获取数据
|
// 监听父组件传递的tagIds,当tagIds发生变化时,重新获取数据
|
||||||
watch(
|
watch(
|
||||||
() => props.articleList,
|
() => props.noteBookTagIds,
|
||||||
(newVal, oldVal) => {
|
(newVal, oldVal) => {
|
||||||
console.log(newVal);
|
console.log(newVal);
|
||||||
queryParams.tagIds = newVal;
|
queryParams.tagIds = newVal;
|
||||||
if (newVal) {
|
if (newVal) {
|
||||||
//获取数据
|
//获取数据
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
// getTableList();
|
getTableList();
|
||||||
getTag();
|
|
||||||
getContent();
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -192,8 +186,14 @@ const handleDelete = (row: any) => {
|
|||||||
*/
|
*/
|
||||||
const formatTag = (tagId: string | null) => {
|
const formatTag = (tagId: string | null) => {
|
||||||
let tagString = '';
|
let tagString = '';
|
||||||
for (let i = 0; i < sys_user_tagOptions.value.length; i++) {
|
// for (let i = 0; i < props.sys_user_tagOptions.length; i++) {
|
||||||
const element:any = sys_user_tagOptions.value[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) {
|
if (tagId!=null) {
|
||||||
let filteredArray = tagId.split(',').filter((item) => item==element.id);
|
let filteredArray = tagId.split(',').filter((item) => item==element.id);
|
||||||
if (filteredArray.length>0) {
|
if (filteredArray.length>0) {
|
||||||
@ -203,36 +203,6 @@ const formatTag = (tagId: string | null) => {
|
|||||||
}
|
}
|
||||||
return tagString.substring(1);
|
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']);
|
const emit = defineEmits(['hideDialog', 'handleUpdate', 'handleDelete']);
|
||||||
</script>
|
</script>
|
||||||
|
@ -14,11 +14,7 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
<!-- <el-table-column label="排序" align="center" prop="" /> -->
|
<!-- <el-table-column label="排序" align="center" prop="" /> -->
|
||||||
<el-table-column label="活动人数" align="center" prop="activityUserCount" />
|
<el-table-column label="活动人数" align="center" prop="activityUserCount" />
|
||||||
<el-table-column label="报名人数" align="center" prop="registrationCount">
|
<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="" width="100px">
|
<el-table-column label="活动流程" align="center" prop="" width="100px">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button link type="primary" @click="chakanhandle(scope.row)">查看详情</el-button>
|
<el-button link type="primary" @click="chakanhandle(scope.row)">查看详情</el-button>
|
||||||
@ -55,44 +51,12 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</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>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts" name="partyList">
|
<script setup lang="ts" name="partyList">
|
||||||
import { ref, reactive, onMounted, nextTick } from 'vue';
|
import { ref, reactive, onMounted, nextTick } from 'vue';
|
||||||
import {activityUsersList} from '@/api/manage/activity';
|
|
||||||
//导入父组件传递的值
|
//导入父组件传递的值
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
partyList: {
|
partyList: {
|
||||||
@ -125,34 +89,6 @@ const handleUpdate = async (row?: any) => {
|
|||||||
const handleDelete = (row: any) => {
|
const handleDelete = (row: any) => {
|
||||||
emit('handleDelete', row);
|
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']);
|
const emit = defineEmits(['hideDialog', 'handleUpdate', 'handleDelete']);
|
||||||
</script>
|
</script>
|
||||||
|
@ -1,6 +1,82 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="app-container home">
|
<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>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -36,13 +36,9 @@
|
|||||||
|
|
||||||
<el-table v-loading="loading" :height="autoTableHeight" :data="activityList" border @selection-change="handleSelectionChange">
|
<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 type="selection" width="55" align="center" />-->
|
||||||
<el-table-column fixed label="序号" align="center" width="80">
|
<el-table-column v-if="true" label="ID" align="center" prop="id" fixed width="180px" />
|
||||||
<template #default="scope">
|
|
||||||
<span>{{ (queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1 }}</span>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="活动名称" align="center" fixed prop="activityName" 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="" />
|
||||||
<el-table-column label="活动人数" align="center" prop="activityUserCount" />
|
<el-table-column label="活动人数" align="center" prop="activityUserCount" />
|
||||||
<el-table-column label="报名人数" align="center" prop="registrationCount">
|
<el-table-column label="报名人数" align="center" prop="registrationCount">
|
||||||
@ -82,7 +78,9 @@
|
|||||||
<el-tag v-if="scope.row.status == 3" type="primary">已发布</el-tag>
|
<el-tag v-if="scope.row.status == 3" type="primary">已发布</el-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</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="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" prop="updateTime" width="180px" />
|
||||||
<el-table-column label="操作" align="center" width="150px" fixed="right" class-name="small-padding fixed-width">
|
<el-table-column label="操作" align="center" width="150px" fixed="right" class-name="small-padding fixed-width">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
@ -206,8 +204,57 @@
|
|||||||
</el-dialog>
|
</el-dialog>
|
||||||
<!-- 查看活动流程 -->
|
<!-- 查看活动流程 -->
|
||||||
<el-dialog v-model="seedialog.visible" :title="seedialog.title" width="60%" append-to-body>
|
<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>
|
||||||
<!-- 问答弹窗-->
|
<!-- 问答弹窗-->
|
||||||
<el-dialog v-model="wendadialog.visible" title="问答" width="40%" append-to-body>
|
<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;
|
form.value.status = type == 1 ? 2 : 0;
|
||||||
const test = type == 1 ? '发布' : '撤销发布';
|
const test = type == 1 ? '发布' : '撤销发布';
|
||||||
const _ids = row?.activityName || ids.value;
|
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));
|
await updateActivity(form.value).finally(() => (buttonLoading.value = false));
|
||||||
proxy?.$modal.msgSuccess(test + '成功');
|
proxy?.$modal.msgSuccess(test + '成功');
|
||||||
await getList();
|
await getList();
|
||||||
@ -528,9 +575,8 @@ const submitForm = () => {
|
|||||||
|
|
||||||
/** 删除按钮操作 */
|
/** 删除按钮操作 */
|
||||||
const handleDelete = async (row?: ActivityVO) => {
|
const handleDelete = async (row?: ActivityVO) => {
|
||||||
const _ids = row?.id || ids.value;
|
const _ids = row?.activityName || ids.value;
|
||||||
const _idsname = row?.activityName || ids.value;
|
await proxy?.$modal.confirm('是否确认删除活动信息编号为"' + _ids + '"的数据项?').finally(() => (loading.value = false));
|
||||||
await proxy?.$modal.confirm('是否确认删除活动名称为"' + _idsname + '"的数据项?').finally(() => (loading.value = false));
|
|
||||||
await delActivity(_ids);
|
await delActivity(_ids);
|
||||||
proxy?.$modal.msgSuccess('删除成功');
|
proxy?.$modal.msgSuccess('删除成功');
|
||||||
await getList();
|
await getList();
|
||||||
|
@ -40,12 +40,7 @@
|
|||||||
<el-table v-loading="loading" :height="autoTableHeight" border :data="articleList"
|
<el-table v-loading="loading" :height="autoTableHeight" border :data="articleList"
|
||||||
@selection-change="handleSelectionChange">
|
@selection-change="handleSelectionChange">
|
||||||
<!-- <el-table-column type="selection" width="55" align="center" /> -->
|
<!-- <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 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="标题" align="center" prop="title" />
|
<el-table-column label="标题" align="center" prop="title" />
|
||||||
<el-table-column label="内容" align="center" prop="content" width="80px">
|
<el-table-column label="内容" align="center" prop="content" width="80px">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
@ -63,7 +58,7 @@
|
|||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-tag v-if="scope.row.status == 0" type="info">未发布</el-tag>
|
<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 == 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>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="更新时间" align="center" prop="updateTime" width="120">
|
<el-table-column label="更新时间" align="center" prop="updateTime" width="120">
|
||||||
@ -74,9 +69,9 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="160px">
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="160px">
|
||||||
<template #default="scope">
|
<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>
|
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>
|
v-hasPermi="['manage:article:edit']">撤销发布</el-button>
|
||||||
<el-tooltip content="编辑" placement="top" v-if="scope.row.status == 0">
|
<el-tooltip content="编辑" placement="top" v-if="scope.row.status == 0">
|
||||||
<el-button link type="primary" @click="handleUpdate(scope.row)"
|
<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"
|
<pagination id="table_page" v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
|
||||||
v-model:limit="queryParams.pageSize" @pagination="getList" />
|
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 ref="articleFormRef" :model="form" :rules="rules" label-width="80px">
|
||||||
<el-form-item label="文章标题" prop="title">
|
<el-form-item label="文章标题" prop="title">
|
||||||
<el-input v-model="form.title" placeholder="请输入文章标题" />
|
<el-input v-model="form.title" placeholder="请输入文章标题" />
|
||||||
@ -136,7 +131,7 @@
|
|||||||
import { listTag,tagAll } from '@/api/manage/tag';
|
import { listTag,tagAll } from '@/api/manage/tag';
|
||||||
import { listArticle, getArticle, delArticle, addArticle, updateArticle } from '@/api/manage/article';
|
import { listArticle, getArticle, delArticle, addArticle, updateArticle } from '@/api/manage/article';
|
||||||
import { ArticleVO, ArticleQuery, ArticleForm } from '@/api/manage/article/types';
|
import { ArticleVO, ArticleQuery, ArticleForm } from '@/api/manage/article/types';
|
||||||
const dialogWidth=ref(window.innerWidth*0.6+'px');
|
|
||||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||||
const sys_user_tagOptions = ref([]); //标签库
|
const sys_user_tagOptions = ref([]); //标签库
|
||||||
const autoTableHeight = ref<number>(750);
|
const autoTableHeight = ref<number>(750);
|
||||||
@ -291,12 +286,11 @@ const handleUpdate = async (row?:any) => {
|
|||||||
* @param row 发布,撤销发布
|
* @param row 发布,撤销发布
|
||||||
* @param type
|
* @param type
|
||||||
*/
|
*/
|
||||||
const updateRow = async (row: any, type: number) => {
|
const updateRow = async (row: any, type: string) => {
|
||||||
await proxy?.$modal.confirm('是否确认' + (type == 0 ? '撤销发布' : '发布') + '名称为"' + row.title + '"的数据项?');
|
await proxy?.$modal.confirm('是否确认' + (type == '0' ? '撤销发布' : '发布') + '名称为"' + row.title + '"的数据项?');
|
||||||
Object.assign(form.value, row);
|
row.status = type;
|
||||||
form.value.status = type;
|
|
||||||
buttonLoading.value = true;
|
buttonLoading.value = true;
|
||||||
await updateArticle(form.value).finally(() => (buttonLoading.value = false));
|
await updateArticle(row).finally(() => (buttonLoading.value = false));
|
||||||
proxy?.$modal.msgSuccess('操作成功');
|
proxy?.$modal.msgSuccess('操作成功');
|
||||||
getList();
|
getList();
|
||||||
};
|
};
|
||||||
|
@ -44,7 +44,7 @@
|
|||||||
<el-table-column label="状态" align="center" prop="" width="90px">
|
<el-table-column label="状态" align="center" prop="" width="90px">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-tag v-if="scope.row.status == 0" type="info">未上架</el-tag>
|
<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>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="180px">
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="180px">
|
||||||
|
@ -32,9 +32,8 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" icon="Search" @click="handleQuery"
|
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
||||||
v-hasPermi="['manage:dyUser:query']">搜索</el-button>
|
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
||||||
<el-button icon="Refresh" @click="resetQuery" v-hasPermi="['manage:dyUser:query']">重置</el-button>
|
|
||||||
<!-- <el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['manage:dyUser:edit']"
|
<!-- <el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['manage:dyUser:edit']"
|
||||||
>封禁</el-button
|
>封禁</el-button
|
||||||
> -->
|
> -->
|
||||||
@ -49,22 +48,13 @@
|
|||||||
<el-table :height="autoTableHeight" v-loading="loading" :data="dyUserList" @selection-change="handleSelectionChange"
|
<el-table :height="autoTableHeight" v-loading="loading" :data="dyUserList" @selection-change="handleSelectionChange"
|
||||||
style="width: 100%" border>
|
style="width: 100%" border>
|
||||||
<!-- <el-table-column fixed type="selection" width="55" align="center" /> -->
|
<!-- <el-table-column fixed type="selection" width="55" align="center" /> -->
|
||||||
<el-table-column fixed label="序号" align="center" width="80">
|
<el-table-column fixed label="用户ID" align="center" prop="id" />
|
||||||
<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="帐号状态" align="center" prop="status">
|
<el-table-column fixed label="帐号状态" align="center" prop="status">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :options="dy_user_status" :value="scope.row.status" />
|
<dict-tag :options="dy_user_status" :value="scope.row.status" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column fixed label="会员等级" align="center" prop="levelId">
|
<el-table-column fixed label="会员等级" align="center" prop="levelName" />
|
||||||
<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="nickName" />
|
<el-table-column fixed label="昵称" align="center" prop="nickName" />
|
||||||
<el-table-column label="用户性别" align="center" prop="sex">
|
<el-table-column label="用户性别" align="center" prop="sex">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
@ -91,50 +81,46 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column width="55" label="年龄" align="center" prop="age" />
|
<el-table-column width="55" label="年龄" align="center" prop="age" />
|
||||||
<el-table-column width="150" label="常住地" align="center" prop="address" />
|
<el-table-column width="150" label="常住地" align="center" prop="address" />
|
||||||
<el-table-column width="80" label="星座" align="center" prop="constellation">
|
<el-table-column width="70" 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="100" label="职业" align="center" prop="occupation" />
|
<el-table-column width="100" label="职业" align="center" prop="occupation" />
|
||||||
<el-table-column width="120" label="简介" align="center" prop="remark" />
|
<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="IP形象" align="center" prop="" />
|
||||||
<el-table-column width="80" label="发布笔记" align="center" prop="">
|
<el-table-column width="80" label="发布笔记" align="center" prop="">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span style="color: dodgerblue; cursor: pointer; text-decoration: underline"
|
<span style="color: dodgerblue; cursor: pointer; text-decoration: underline"
|
||||||
@click="openNoteListDialog(scope.row)">{{ scope.row.notebookCount }}</span>
|
@click="openNoteListDialog(scope.row)">12</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column width="90" label="发布的活动" align="center" prop="">
|
<el-table-column width="90" label="发布的活动" align="center" prop="">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span style="color: dodgerblue; cursor: pointer; text-decoration: underline"
|
<span style="color: dodgerblue; cursor: pointer; text-decoration: underline"
|
||||||
@click="openPartyListDialog(scope.row)">{{ scope.row.pubMateCount }}</span>
|
@click="openPartyListDialog(scope.row)">15</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column width="80" label="关注的人" align="center" prop="focusCount" />
|
<el-table-column width="80" label="关注的人" align="center" prop="" />
|
||||||
<el-table-column width="80" label="粉丝数" align="center" prop="fanCount" />
|
<el-table-column width="80" label="粉丝数" align="center" prop="" />
|
||||||
<el-table-column width="90" label="到过的景点" align="center" prop="">
|
<el-table-column width="90" label="到过的景点" align="center" prop="">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span style="color: dodgerblue; cursor: pointer; text-decoration: underline"
|
<span style="color: dodgerblue; cursor: pointer; text-decoration: underline"
|
||||||
@click="openScenicListDialog(scope.row)">{{ scope.row.scenicSpotCount }}</span>
|
@click="openScenicListDialog(scope.row)">20</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column width="90" label="点亮的城市" align="center" prop="">
|
<el-table-column width="90" label="点亮的城市" align="center" prop="">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span style="color: dodgerblue; cursor: pointer; text-decoration: underline"
|
<span style="color: dodgerblue; cursor: pointer; text-decoration: underline"
|
||||||
@click="openCityListDialog(scope.row)">{{ scope.row.cityCount }}</span>
|
@click="openCityListDialog(scope.row)">25</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column width="110" label="获得的明信片" align="center" prop="">
|
<el-table-column width="110" label="获得的明信片" align="center" prop="">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span style="color: dodgerblue; cursor: pointer; text-decoration: underline"
|
<span style="color: dodgerblue; cursor: pointer; text-decoration: underline"
|
||||||
@click="openPostcardListDialog(scope.row)">{{ scope.row.postcardCount }}</span>
|
@click="openPostcardListDialog(scope.row)">12</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</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="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="90" label="获得的物品" align="center" prop="" />
|
||||||
<el-table-column width="70" label="积分" align="center" prop="userScore" />
|
<el-table-column width="70" label="积分" align="center" prop="score" />
|
||||||
<el-table-column width="90" label="我的订单" align="center" prop="">
|
<el-table-column width="90" label="我的订单" align="center" prop="">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<span style="color: dodgerblue; cursor: pointer" @click="openOrderListDialog(scope.row)">查看详情</span>
|
<span style="color: dodgerblue; cursor: pointer" @click="openOrderListDialog(scope.row)">查看详情</span>
|
||||||
@ -148,7 +134,7 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column width="80" label="处理方式" align="center" prop="">
|
<el-table-column width="80" label="处理方式" align="center" prop="">
|
||||||
<template #default="scope">
|
<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>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column width="150" label="封禁理由" align="center" prop="reason" show-overflow-tooltip>
|
<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" />
|
<dict-tag :options="dy_user_ban_mode" :value="scope.row.reason" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</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">
|
<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>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column width="90" label="操作人" align="center" prop="" />
|
<el-table-column width="90" label="操作人" align="center" prop="" />
|
||||||
<el-table-column width="120" 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">
|
<template #default="scope">
|
||||||
<el-button link type="primary" size="small" v-hasPermi="['manage:dyUser:edit']" v-if="scope.row.status == 0"
|
<el-button link type="primary" size="small" v-hasPermi="['manage:dyUser:edit']" v-if="scope.row.status == 0"
|
||||||
@click="openbanned(scope.row)">封禁</el-button>
|
@click="openbanned(scope.row)">封禁</el-button>
|
||||||
@ -187,8 +173,8 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="处理方式" prop="status">
|
<el-form-item label="处理方式" prop="status">
|
||||||
<el-radio-group v-model="form.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)"
|
<el-radio v-for="dict in dy_user_status" :key="dict.value" :label="dict.label"
|
||||||
v-show="dict.value != '0'">{{ dict.label }}</el-radio>
|
:value="parseInt(dict.value)">{{ dict.label }}</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="处理天数" prop="banDays">
|
<el-form-item label="处理天数" prop="banDays">
|
||||||
@ -284,7 +270,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-dialog>
|
</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 :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="nickName" />
|
||||||
<el-table-column label="用户头像" align="center" fixed prop="" />
|
<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';
|
import { DyUserVO, DyUserQuery, DyUserForm } from '@/api/manage/dyUser/types';
|
||||||
|
|
||||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
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>(
|
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','dy_user_sign')
|
proxy?.useDict('dy_user_ban_days', 'dy_user_status', 'sys_user_sex', 'dy_user_ban_mode')
|
||||||
);
|
);
|
||||||
const orderLists = ref([]); //用户订单列表
|
const orderLists = ref([]); //用户订单列表
|
||||||
const scenicList = ref([]); //用户点亮的景点
|
const scenicList = ref([]); //用户点亮的景点
|
||||||
@ -528,8 +514,8 @@ const handleStatus = async (row: DyUserVO) => {
|
|||||||
await proxy?.$modal.confirm('是否确认解封用户昵称为"' + row.nickName + '"的数据项?')
|
await proxy?.$modal.confirm('是否确认解封用户昵称为"' + row.nickName + '"的数据项?')
|
||||||
Object.assign(form.value, row);
|
Object.assign(form.value, row);
|
||||||
form.value.status = 0;
|
form.value.status = 0;
|
||||||
form.value.reason = '';
|
form.value.reason = null;
|
||||||
form.value.banDays='0';
|
form.value.banDays=null
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
await updateDyUser(form.value).finally(() => (loading.value = false));
|
await updateDyUser(form.value).finally(() => (loading.value = false));
|
||||||
proxy?.$modal.msgSuccess('操作成功');
|
proxy?.$modal.msgSuccess('操作成功');
|
||||||
|
@ -16,7 +16,6 @@
|
|||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
||||||
<el-button icon="Refresh" @click="resetQuery">重置</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-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-card>
|
</el-card>
|
||||||
@ -24,12 +23,23 @@
|
|||||||
</transition>
|
</transition>
|
||||||
|
|
||||||
<el-card shadow="never">
|
<el-card shadow="never">
|
||||||
<el-table v-loading="loading" :data="hotelList">
|
<template #header>
|
||||||
<el-table-column fixed label="序号" align="center" width="80">
|
<el-row :gutter="10" class="mb8">
|
||||||
<template #default="scope">
|
<el-col :span="1.5">
|
||||||
<span>{{ (queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1 }}</span>
|
<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>
|
</template>
|
||||||
</el-table-column>
|
|
||||||
|
<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="name" />
|
||||||
<el-table-column label="商家图片" align="center" prop="imageUrl" />
|
<el-table-column label="商家图片" align="center" prop="imageUrl" />
|
||||||
<el-table-column label="商家地理位置" align="center" prop="address" />
|
<el-table-column label="商家地理位置" align="center" prop="address" />
|
||||||
@ -303,7 +313,7 @@ const handleEdit = async (row?: HotelVO) => {
|
|||||||
const res = await getHotel(_id);
|
const res = await getHotel(_id);
|
||||||
Object.assign(form.value, res.data);
|
Object.assign(form.value, res.data);
|
||||||
const _idname = row?.name;
|
const _idname = row?.name;
|
||||||
const text = row?.status != 1 ? '是否确认发布商家名称为"' : '是否撤销发布商家名称为"';
|
const text = row?.status != 1 ? '是否确认发布商家名称为' : '是否撤销发布商家名称为';
|
||||||
const messages = row?.status != 1 ? '发布成功' : '撤销成功';
|
const messages = row?.status != 1 ? '发布成功' : '撤销成功';
|
||||||
await proxy?.$modal.confirm(text + _idname + '"的数据项?').finally(() => (loading.value = false));
|
await proxy?.$modal.confirm(text + _idname + '"的数据项?').finally(() => (loading.value = false));
|
||||||
const template = {
|
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) => {
|
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) {
|
if (data.status == 0) {
|
||||||
|
center.value.lat = data.result.location.lat;
|
||||||
|
center.value.lng = data.result.location.lng;
|
||||||
form.value.address =
|
form.value.address =
|
||||||
data.result.address_components.province +
|
data.result.address_components.province +
|
||||||
data.result.address_components.city +
|
data.result.address_components.city +
|
||||||
@ -345,7 +357,6 @@ const performSearch = async (text) => {
|
|||||||
form.value.regionCode = data.result.ad_info.adcode; //行政区划编码
|
form.value.regionCode = data.result.ad_info.adcode; //行政区划编码
|
||||||
// form.value.province = data.result.address_components.province;
|
// form.value.province = data.result.address_components.province;
|
||||||
// form.value.city = data.result.address_components.city;
|
// 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 } }];
|
geometries.value = [{ styleId: 'marker', position: { lat: data.result.location.lat, lng: data.result.location.lng } }];
|
||||||
} else if (data.status == 348) {
|
} else if (data.status == 348) {
|
||||||
//地址信息不明确,需弹出提示
|
//地址信息不明确,需弹出提示
|
||||||
@ -375,7 +386,8 @@ const onClick = (e: any) => {
|
|||||||
// form.value.city = data.result.address_component.city;
|
// form.value.city = data.result.address_component.city;
|
||||||
// form.value.region = data.result.ad_info.adcode; //行政区划编码
|
// form.value.region = data.result.ad_info.adcode; //行政区划编码
|
||||||
form.value.regionCode = 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;
|
searchLocation.value = data.result.formatted_addresses.recommend;
|
||||||
geometries.value = [{ styleId: 'marker', position: { 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 } }];
|
||||||
}
|
}
|
||||||
|
@ -12,9 +12,8 @@
|
|||||||
<el-form-item label="发布状态" prop="status">
|
<el-form-item label="发布状态" prop="status">
|
||||||
<el-select v-model="queryParams.status" class="inputWidth" placeholder="请选择发布状态" clearable
|
<el-select v-model="queryParams.status" class="inputWidth" placeholder="请选择发布状态" clearable
|
||||||
@keyup.enter="handleQuery">
|
@keyup.enter="handleQuery">
|
||||||
|
<el-option label="已发布" :value="1" />
|
||||||
<el-option label="未发布" :value="0" />
|
<el-option label="未发布" :value="0" />
|
||||||
<el-option label="审核中" :value="1" />
|
|
||||||
<el-option label="已发布" :value="2" />
|
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<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="shor" />
|
||||||
<el-table-column label="发布状态" align="center" prop="status">
|
<el-table-column label="发布状态" align="center" prop="status">
|
||||||
<template #default="scope">
|
<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-else-if="scope.row.status == 1" type="success">审核中</el-tag>
|
<el-tag v-else type="info">未发布</el-tag>
|
||||||
<el-tag v-else-if="scope.row.status == 1" type="primary">已发布</el-tag>
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="创建者" align="center" prop="createName" />
|
<el-table-column label="创建者" align="center" prop="createName" />
|
||||||
@ -58,7 +56,7 @@
|
|||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button link type="primary" @click="handleStatus(scope.row,1)" v-if="scope.row.status == 0"
|
<el-button link type="primary" @click="handleStatus(scope.row,1)" v-if="scope.row.status == 0"
|
||||||
v-hasPermi="['manage:ipImage:edit']">发布</el-button>
|
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>
|
v-hasPermi="['manage:ipImage:edit']">撤销发布</el-button>
|
||||||
<el-tooltip content="编辑" placement="top">
|
<el-tooltip content="编辑" placement="top">
|
||||||
<el-button link type="primary" @click="handleUpdate(scope.row)" v-if="scope.row.status == 0"
|
<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 handleDelete = async (row?: IpImageVO) => {
|
||||||
const _ids = row?.id || ids.value;
|
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);
|
await delIpImage(_ids);
|
||||||
proxy?.$modal.msgSuccess("删除成功");
|
proxy?.$modal.msgSuccess("删除成功");
|
||||||
await getList();
|
await getList();
|
||||||
|
@ -37,8 +37,7 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="状态" align="center" prop="status">
|
<el-table-column label="状态" align="center" prop="status">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-tag v-if="scope.row.status == 0" type="info">未发布</el-tag>
|
<span>{{ scope.row.status == 0 ? '未发布' : '已发布' }}</span>
|
||||||
<el-tag v-if="scope.row.status == 1" type="primary">已发布</el-tag>
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="创建者" align="center" prop="createName" />
|
<el-table-column label="创建者" align="center" prop="createName" />
|
||||||
|
@ -15,7 +15,6 @@
|
|||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
||||||
<el-button icon="Refresh" @click="resetQuery">重置</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-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-card>
|
</el-card>
|
||||||
@ -23,14 +22,23 @@
|
|||||||
</transition>
|
</transition>
|
||||||
|
|
||||||
<el-card shadow="never">
|
<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 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">
|
<el-table-column label="任务类别" align="center" prop="category">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<dict-tag :options="mk_jigsaw_task_catagory" :value="scope.row.category" />
|
<dict-tag :options="mk_jigsaw_task_catagory" :value="scope.row.category" />
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</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="productName" />
|
||||||
<el-table-column label="商品类别" align="center" prop="productCategory">
|
<el-table-column label="商品类别" align="center" prop="productCategory">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
@ -45,16 +53,8 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="拼图数量" align="center" prop="jigsawConfigCount" />
|
<el-table-column label="拼图数量" align="center" prop="jigsawConfigCount" />
|
||||||
<el-table-column label="设置得奖人数" align="center" prop="awardConfigCount" />
|
<el-table-column label="设置得奖人数" align="center" prop="awardConfigCount" />
|
||||||
<el-table-column label="参与人数" align="center" prop="joinCount">
|
<el-table-column label="参与人数" align="center" prop="joinCount" />
|
||||||
<template #default="scope">
|
<el-table-column label="实际得奖人数" align="center" prop="awardCount" />
|
||||||
<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="awardCount">
|
<el-table-column label="拼图碎片获得人数" align="center" prop="awardCount">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button type="primary" link @click="imagesui(scope.row)">查看详情</el-button>
|
<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>
|
<el-tag v-if="scope.row.status == 2" type="primary">已发布</el-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="创建人" align="center" prop="createName" show-overflow-tooltip />
|
<el-table-column label="创建人" align="center" prop="createName" />
|
||||||
<el-table-column label="创建时间" align="center" prop="createTime" show-overflow-tooltip />
|
<el-table-column label="创建时间" align="center" prop="createTime" />
|
||||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="150px">
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="120px">
|
||||||
<template #default="scope">
|
<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 v-if="scope.row.status == 0" v-hasPermi="['manage:mkJigsaw:edit']" link type="primary" @click="handleUpdate(scope.row, 2)"
|
||||||
>编辑</el-button
|
>编辑</el-button
|
||||||
@ -130,8 +130,8 @@
|
|||||||
start-placeholder="选择开始时间"
|
start-placeholder="选择开始时间"
|
||||||
end-placeholder="选择结束时间"
|
end-placeholder="选择结束时间"
|
||||||
format="YYYY-MM-DD HH:mm:ss"
|
format="YYYY-MM-DD HH:mm:ss"
|
||||||
date-format="YYYY/MM/DD"
|
date-format="YYYY/MM/DD ddd"
|
||||||
time-format="HH:mm:ss"
|
time-format="A hh:mm:ss"
|
||||||
value-format="YYYY-MM-DD HH:mm:ss"
|
value-format="YYYY-MM-DD HH:mm:ss"
|
||||||
:picker-options="{ disabledDate: dateOptions }"
|
:picker-options="{ disabledDate: dateOptions }"
|
||||||
@change="mkdatetime"
|
@change="mkdatetime"
|
||||||
@ -195,20 +195,20 @@
|
|||||||
<div>{{ form.startDate }}~{{ form.endDate }}</div>
|
<div>{{ form.startDate }}~{{ form.endDate }}</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="设置拼图数量">
|
<el-form-item label="设置拼图数量">
|
||||||
<div>{{ form.jigsawConfigCount }}</div>
|
<div>{{form.jigsawConfigCount}}</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="得奖人数">
|
<el-form-item label="得奖人数">
|
||||||
<div>{{ form.awardConfigCount }}</div>
|
<div>{{form.awardConfigCount}}</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="控制得奖拼图">
|
<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-option v-for="dict in numlist" :key="dict.label" :label="dict.label" :value="dict.label"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<div class="numlistclasss">
|
<div class="numlistclasss">
|
||||||
<div v-for="item in numlistdata" :key="item.name">
|
<div v-for="item in numlistdata" :key="item.name">
|
||||||
<el-form-item :label="`${item.name}:可获得概率`">
|
<el-form-item :label="`${item.name}:可获得概率`">
|
||||||
<div>{{ item.probability }}%</div>
|
<div>{{item.probability}}%</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -31,11 +31,7 @@
|
|||||||
|
|
||||||
<el-table v-loading="loading" border :data="mkPostcardList" :height="autoTableHeight"
|
<el-table v-loading="loading" border :data="mkPostcardList" :height="autoTableHeight"
|
||||||
@selection-change="handleSelectionChange">
|
@selection-change="handleSelectionChange">
|
||||||
<el-table-column label="序号" align="center" width="80">
|
<el-table-column label="ID" align="center" prop="id" v-if="true" width="150" />
|
||||||
<template #default="scope">
|
|
||||||
<span>{{ (queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1 }}</span>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="明信片名称" align="center" prop="name" />
|
<el-table-column label="明信片名称" align="center" prop="name" />
|
||||||
<el-table-column label="关联景点" align="center" prop="articleId">
|
<el-table-column label="关联景点" align="center" prop="articleId">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
@ -57,8 +53,7 @@
|
|||||||
<!-- 0-未上架 1-已上架 -->
|
<!-- 0-未上架 1-已上架 -->
|
||||||
<el-table-column label="状态" align="center" prop="status">
|
<el-table-column label="状态" align="center" prop="status">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-tag v-if="scope.row.status == 0" type="info">未上架</el-tag>
|
<span>{{ scope.row.status == 1 ? '已上架' : '未上架'}}</span>
|
||||||
<el-tag v-if="scope.row.status == 1" type="primary">已上架</el-tag>
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="创建者" align="center" prop="updateByName" />
|
<el-table-column label="创建者" align="center" prop="updateByName" />
|
||||||
|
@ -1,32 +1,33 @@
|
|||||||
<!-- 笔记管理 -->
|
<!-- 笔记管理 -->
|
||||||
<template>
|
<template>
|
||||||
<div class="p-2">
|
<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]">
|
<div v-show="showSearch" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
||||||
<el-form-item label="笔记标题" prop="id">
|
<el-form-item label="笔记标题" prop="id">
|
||||||
<el-input v-model="queryParams.title" placeholder="请输入笔记标题" clearable @keyup.enter="handleQuery" />
|
<el-input v-model="queryParams.title" placeholder="请输入笔记标题" clearable @keyup.enter="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="发布人" prop="updateByName">
|
<el-form-item label="发布人" prop="title">
|
||||||
<el-input v-model="queryParams.updateByName" placeholder="请输入发布人" clearable @keyup.enter="handleQuery" />
|
<el-input v-model="queryParams.title" placeholder="请输入发布人" clearable @keyup.enter="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="标记地点" prop="cover">
|
<el-form-item label="标记地点" prop="cover">
|
||||||
<!-- <el-input v-model="queryParams.cover" placeholder="请输入标记地点" clearable @keyup.enter="handleQuery" />-->
|
<!-- <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-option v-for="item in sys_user_contentOptions" :key="item.id" :label="item.name" :value="item.id" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="发布状态" prop="tagId">
|
<el-form-item label="发布状态" prop="tagId">
|
||||||
<!-- <el-input v-model="queryParams.tagId" placeholder="请输入标签" clearable @keyup.enter="handleQuery" /> -->
|
<!-- <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-option v-for="item in statusoptions" :key="item.value" :label="item.label" :value="item.value" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
||||||
<el-button icon="Refresh" @click="resetQuery">重置</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-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-card>
|
</el-card>
|
||||||
@ -34,26 +35,41 @@
|
|||||||
</transition>
|
</transition>
|
||||||
|
|
||||||
<el-card shadow="never">
|
<el-card shadow="never">
|
||||||
<el-table v-loading="loading" :data="notebookList" border @selection-change="handleSelectionChange">
|
<template #header>
|
||||||
<!-- <el-table-column type="selection" width="55" align="center" />-->
|
<el-row :gutter="10" class="mb8">
|
||||||
<el-table-column label="序号" align="center" width="80">
|
<el-col :span="1.5">
|
||||||
<template #default="scope">
|
<el-button v-hasPermi="['manage:notebook:add']" type="primary" plain icon="Plus" @click="handleAdd">新增
|
||||||
<span>{{ (queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1 }}</span>
|
</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>
|
</template>
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="笔记标题" align="center" prop="title" show-overflow-tooltip />
|
<el-table v-loading="loading" :data="notebookList" @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="title" />
|
||||||
<el-table-column label="笔记封面" align="center" prop="cover">
|
<el-table-column label="笔记封面" align="center" prop="cover">
|
||||||
<template #default="scope">
|
<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" /> -->
|
<!-- <image-preview :src="scope.row.productImageUrl" /> -->
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</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">
|
<template #default="scope">
|
||||||
<span>{{ formatlocation(scope.row.location) }}</span>
|
<span>{{ formatlocation(scope.row.location) }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</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">
|
<template #default="scope">
|
||||||
<span>{{ formatTag(scope.row.tagId) }}</span>
|
<span>{{ formatTag(scope.row.tagId) }}</span>
|
||||||
</template>
|
</template>
|
||||||
@ -85,36 +101,23 @@
|
|||||||
<el-table-column label="操作时间" align="center" prop="updateTime" width="200px" />
|
<el-table-column label="操作时间" align="center" prop="updateTime" width="200px" />
|
||||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="150px">
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="150px">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button
|
<el-button v-if="scope.row.status == 0||scope.row.status == 1" v-hasPermi="['manage:notebook:edit']" link
|
||||||
v-if="scope.row.status == 0 || scope.row.status == 1"
|
type="primary" @click="handleUpdate(scope.row)">编辑</el-button>
|
||||||
v-hasPermi="['manage:notebook:edit']"
|
<el-button v-if="scope.row.status == 0" v-hasPermi="['manage:notebook:edit']" link type="primary"
|
||||||
link
|
@click="fabudata(scope.row)">发布</el-button>
|
||||||
type="primary"
|
<el-button v-if="scope.row.status == 3" v-hasPermi="['manage:notebook:edit']" link type="primary"
|
||||||
@click="handleUpdate(scope.row)"
|
@click="fabudata(scope.row)">撤销发布</el-button>
|
||||||
>编辑</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-tooltip content="发布" placement="top">-->
|
||||||
<!-- <el-button v-hasPermi="['manage:notebook:edit']" link type="primary" icon="Edit" @click="handleUpdate(scope.row)"></el-button>-->
|
<!-- <el-button v-hasPermi="['manage:notebook:edit']" link type="primary" icon="Edit" @click="handleUpdate(scope.row)"></el-button>-->
|
||||||
<!-- </el-tooltip>-->
|
<!-- </el-tooltip>-->
|
||||||
<el-button
|
<el-button v-if="scope.row.status == 0||scope.row.status == 1" v-hasPermi="['manage:notebook:remove']" link
|
||||||
v-if="scope.row.status == 0 || scope.row.status == 1"
|
type="primary" @click="handleDelete(scope.row)">删除</el-button>
|
||||||
v-hasPermi="['manage:notebook:remove']"
|
|
||||||
link
|
|
||||||
type="primary"
|
|
||||||
@click="handleDelete(scope.row)"
|
|
||||||
>删除</el-button
|
|
||||||
>
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</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-card>
|
||||||
<!-- 添加或修改笔记对话框 -->
|
<!-- 添加或修改笔记对话框 -->
|
||||||
<el-dialog v-model="dialog.visible" :title="dialog.title" width="60%" append-to-body>
|
<el-dialog v-model="dialog.visible" :title="dialog.title" width="60%" append-to-body>
|
||||||
@ -153,8 +156,11 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
<!-- 笔记详情-->
|
<!-- 笔记详情-->
|
||||||
<el-dialog v-model="concentdialog.visible" title="笔记详情" width="500px" append-to-body>
|
<el-dialog v-model="concentdialog.visible" title="笔记详情" width="50%" append-to-body>
|
||||||
<note :form="form"></note>
|
<div>{{ form.title }}</div>
|
||||||
|
<div>{{ formatTag(form.tagId) }}</div>
|
||||||
|
<div>{{ formatlocation(form.location) }}</div>
|
||||||
|
<div v-html="form.content"></div>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
<!-- 评论详情 -->
|
<!-- 评论详情 -->
|
||||||
<el-dialog v-model="comment.visible" title="评论详情" width="600px" append-to-body>
|
<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++) {
|
for (let i = 0; i < sys_user_tagOptions.value.length; i++) {
|
||||||
const element = sys_user_tagOptions.value[i];
|
const element = sys_user_tagOptions.value[i];
|
||||||
if (tagId != null) {
|
if (tagId!=null) {
|
||||||
let filteredArray = tagId.split(',').filter((item) => item == element.id);
|
let filteredArray = tagId.split(',').filter((item) => item==element.id);
|
||||||
if (filteredArray.length > 0) {
|
if (filteredArray.length>0) {
|
||||||
tagString += ',' + element.title;
|
tagString += ',' + element.title;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -380,8 +386,6 @@ const handleSelectionChange = (selection: NotebookVO[]) => {
|
|||||||
const handleAdd = () => {
|
const handleAdd = () => {
|
||||||
reset();
|
reset();
|
||||||
dialog.visible = true;
|
dialog.visible = true;
|
||||||
tagvalue.value = '';
|
|
||||||
addressvalue.value = '';
|
|
||||||
dialog.title = '添加笔记';
|
dialog.title = '添加笔记';
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -391,8 +395,8 @@ const handleUpdate = async (row?: NotebookVO) => {
|
|||||||
const _id = row?.id || ids.value[0];
|
const _id = row?.id || ids.value[0];
|
||||||
const res = await getNotebook(_id);
|
const res = await getNotebook(_id);
|
||||||
Object.assign(form.value, res.data);
|
Object.assign(form.value, res.data);
|
||||||
tagvalue.value = form.value.tagId && form.value.tagId.split(',');
|
tagvalue.value = form.value.tagId.split(',');
|
||||||
addressvalue.value = form.value.tagId && form.value.location.split(',');
|
addressvalue.value = form.value.location.split(',');
|
||||||
dialog.visible = true;
|
dialog.visible = true;
|
||||||
dialog.title = '修改笔记';
|
dialog.title = '修改笔记';
|
||||||
};
|
};
|
||||||
|
@ -71,11 +71,7 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="订单号" align="center" prop="orderNumber" />
|
<el-table-column label="订单号" align="center" prop="orderNumber" />
|
||||||
<el-table-column label="来源" align="center" prop="source" width="80px">
|
<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="productName" />
|
<el-table-column label="商品名称" align="center" prop="productName" />
|
||||||
<el-table-column label="商品图片" align="center" prop="productImageUrl" width="100">
|
<el-table-column label="商品图片" align="center" prop="productImageUrl" width="100">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
@ -90,9 +86,7 @@
|
|||||||
<el-table-column label="供应商" align="center" prop="vendorId" />
|
<el-table-column label="供应商" align="center" prop="vendorId" />
|
||||||
<el-table-column label="订单状态" align="center" prop="orderStatus">
|
<el-table-column label="订单状态" align="center" prop="orderStatus">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<!-- <dict-tag :options="dy_order_status" :value="scope.row.orderStatus" /> -->
|
<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>
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="物流名称" align="center" prop="logisticsName" />
|
<el-table-column label="物流名称" align="center" prop="logisticsName" />
|
||||||
@ -100,8 +94,8 @@
|
|||||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button link type="primary" v-if="scope.row.orderStatus == 0" v-hasPermi="['manage:orders:edit']"
|
<el-button link type="primary" v-if="scope.row.orderStatus == 0" v-hasPermi="['manage:orders:edit']"
|
||||||
@click="handleOrderStatus(scope.row,1)">发货</el-button>
|
@click="handleOrderStatus(scope.row,'1')">发货</el-button>
|
||||||
<el-button link type="primary" @click="handleOrderStatus(scope.row,0)" v-if="scope.row.orderStatus == 1"
|
<el-button link type="primary" @click="handleOrderStatus(scope.row,'0')" v-if="scope.row.orderStatus == 1"
|
||||||
v-hasPermi="['manage:orders:edit']">撤销发货</el-button>
|
v-hasPermi="['manage:orders:edit']">撤销发货</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@ -273,10 +267,9 @@ const handleAdd = () => {
|
|||||||
*/
|
*/
|
||||||
const handleOrderStatus = async (row: OrdersVO,type:string|number) => {
|
const handleOrderStatus = async (row: OrdersVO,type:string|number) => {
|
||||||
await proxy?.$modal.confirm('是否确认' + (type == '0' ? '撤销发货' : '发货') + '商品名称为"' + row.productName + '"的数据项?');
|
await proxy?.$modal.confirm('是否确认' + (type == '0' ? '撤销发货' : '发货') + '商品名称为"' + row.productName + '"的数据项?');
|
||||||
Object.assign(form.value, row);
|
row.orderStatus = type;
|
||||||
form.value.orderStatus = type;
|
|
||||||
buttonLoading.value = true;
|
buttonLoading.value = true;
|
||||||
await updateOrders(form.value).finally(() => (buttonLoading.value = false));
|
await updateOrders(row).finally(() => (buttonLoading.value = false));
|
||||||
proxy?.$modal.msgSuccess('操作成功');
|
proxy?.$modal.msgSuccess('操作成功');
|
||||||
getList();
|
getList();
|
||||||
}
|
}
|
||||||
|
@ -32,12 +32,7 @@
|
|||||||
|
|
||||||
<el-table v-loading="loading" border :height="autoTableHeight" :data="productList"
|
<el-table v-loading="loading" border :height="autoTableHeight" :data="productList"
|
||||||
@selection-change="handleSelectionChange">
|
@selection-change="handleSelectionChange">
|
||||||
<!-- <el-table-column label="商品ID" align="center" prop="id" v-if="true" width="180px" /> -->
|
<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="商品名称" align="center" prop="productName" />
|
<el-table-column label="商品名称" align="center" prop="productName" />
|
||||||
<el-table-column label="商品类别" align="center" prop="categoryId">
|
<el-table-column label="商品类别" align="center" prop="categoryId">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
@ -53,9 +48,7 @@
|
|||||||
<el-table-column label="排序" align="center" prop="sortNum" />
|
<el-table-column label="排序" align="center" prop="sortNum" />
|
||||||
<el-table-column label="商品状态" align="center" prop="status">
|
<el-table-column label="商品状态" align="center" prop="status">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<!-- <dict-tag :options="sys_shelf_status" :value="scope.row.status" /> -->
|
<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>
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="供应商" align="center" prop="vendorId">
|
<el-table-column label="供应商" align="center" prop="vendorId">
|
||||||
|
@ -133,7 +133,7 @@ const productCategoryFormRef = ref<ElFormInstance>();
|
|||||||
const wishParams = reactive({
|
const wishParams = reactive({
|
||||||
pageNum: 1,
|
pageNum: 1,
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
productCategoryId: undefined,
|
id: undefined,
|
||||||
})
|
})
|
||||||
const dialog = reactive<DialogOption>({
|
const dialog = reactive<DialogOption>({
|
||||||
visible: false,
|
visible: false,
|
||||||
@ -274,7 +274,7 @@ const handleMakeWish = async (row: ProductCategoryVO) => {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
loading.value = true;
|
loading.value = true;
|
||||||
wishParams.productCategoryId= row.id;
|
wishParams.id= row.id;
|
||||||
getWishUserList();
|
getWishUserList();
|
||||||
makeWish.visible = true;
|
makeWish.visible = true;
|
||||||
}
|
}
|
||||||
|
@ -5,21 +5,20 @@
|
|||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
||||||
<el-form-item label="用户昵称" prop="contentId">
|
<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>
|
||||||
<el-form-item label=" 状态">
|
<el-form-item label="账号状态" prop="handlingStatus">
|
||||||
<el-select v-model="queryParams.handlingStatus" placeholder="请选择状态" clearable>
|
<el-select v-model="queryParams.handlingStatus" placeholder="请选择状态" clearable>
|
||||||
<el-option label="未处理" value="0" />
|
<!-- <el-option v-for="dict in dy_banned_handling_status" :key="dict.value" :label="dict.label" :value="dict.value" />-->
|
||||||
<el-option label="已处理" value="1" />
|
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="性别">
|
<el-form-item label="性别" prop="handlingStatus">
|
||||||
<el-select v-model="queryParams.sex" placeholder="请选择用户性别" clearable>
|
<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-option v-for="dict in sys_user_sex" :key="dict.value" :label="dict.label" :value="dict.value" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="会员等级">
|
<el-form-item label="会员等级" prop="handlingStatus">
|
||||||
<el-select v-model="queryParams.levelId" placeholder="请选择状态" clearable>
|
<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-option v-for="dict in dy_banned_handling_status" :key="dict.id" :label="dict.levelName" :value="dict.id" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@ -43,25 +42,25 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-table v-loading="loading" :data="bannedList">
|
<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">
|
<template #default="scope">
|
||||||
<el-button type="primary" link>{{ scope.row.contentName }}</el-button>
|
<el-button type="primary" link>查看笔记</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</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">
|
<template #default="scope">
|
||||||
<el-button type="primary" link>{{ scope.row.contentName }}</el-button>
|
<el-button type="primary" link>查看活动</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column v-if="queryParams.type == 3" label="评论内容" align="center" prop="contentId">
|
<el-table-column v-if="queryParams.type == 3" label="评论内容" align="center" prop="contentId" >
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button type="primary" link>{{ scope.row.contentName }}</el-button>
|
<el-button type="primary" link>查看笔记</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="用户ID" align="center" prop="reportUserId" />
|
<el-table-column label="用户ID" align="center" prop="reportUserId" />
|
||||||
<el-table-column label="会员等级" align="center" prop="userLevel">
|
<el-table-column label="会员等级" align="center" prop="userLevel">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<div>{{ formatlevel(scope.row.levelId) }}</div>
|
<div>{{formatlevel(scope.row.levelId)}}</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="昵称" align="center" prop="nickName" />
|
<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="createTime" width="200px" />
|
||||||
<el-table-column label="操作时间" align="center" prop="updateTime" 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="updateName" width="150px" />
|
||||||
<el-table-column label="状态" align="center" prop="handlingStatus">
|
<el-table-column label="状态" align="center" prop="handlingStatus" >
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-tag v-if="scope.row.handlingStatus == 0" type="info">未处理</el-tag>
|
<el-tag v-if="scope.row.handlingStatus == 0" type="info">未处理</el-tag>
|
||||||
<el-tag v-if="scope.row.handlingStatus == 1" type="warning">已处理</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">
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="150px">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button v-hasPermi="['manage:report:edit']" link type="primary" @click="handleUpdate(scope.row)">封禁</el-button>
|
<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 v-hasPermi="['manage:report:remove']" link type="primary" @click="handleDelete(scope.row)">删除{{ radio1 }}</el-button>
|
||||||
>删除笔记</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
|
|
||||||
>
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
@ -133,7 +124,6 @@
|
|||||||
<script setup name="Banned" lang="ts">
|
<script setup name="Banned" lang="ts">
|
||||||
import { listBanned, getBanned, delBanned, addBanned, updateBanned, userLevelall } from '@/api/manage/banned';
|
import { listBanned, getBanned, delBanned, addBanned, updateBanned, userLevelall } from '@/api/manage/banned';
|
||||||
import { BannedVO, BannedQuery, BannedForm } from '@/api/manage/banned/types';
|
import { BannedVO, BannedQuery, BannedForm } from '@/api/manage/banned/types';
|
||||||
import { delNotebook } from '@/api/manage/notebook';
|
|
||||||
|
|
||||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||||
const { dy_banned_handling_method, sys_user_sex, dy_banned_ban_reason, dy_user_ban_days } = toRefs<any>(
|
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: {
|
queryParams: {
|
||||||
pageNum: 1,
|
pageNum: 1,
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
nickName: undefined,
|
|
||||||
contentId: undefined,
|
contentId: undefined,
|
||||||
reportUserId: undefined,
|
reportUserId: undefined,
|
||||||
reportReason: undefined,
|
reportReason: undefined,
|
||||||
@ -240,10 +229,6 @@ const handleQuery = () => {
|
|||||||
/** 重置按钮操作 */
|
/** 重置按钮操作 */
|
||||||
const resetQuery = () => {
|
const resetQuery = () => {
|
||||||
queryFormRef.value?.resetFields();
|
queryFormRef.value?.resetFields();
|
||||||
queryParams.value.nickName = '';
|
|
||||||
queryParams.value.sex = '';
|
|
||||||
queryParams.value.handlingStatus = '';
|
|
||||||
queryParams.value.levelId = '';
|
|
||||||
handleQuery();
|
handleQuery();
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -290,11 +275,9 @@ const submitForm = () => {
|
|||||||
|
|
||||||
/** 删除按钮操作 */
|
/** 删除按钮操作 */
|
||||||
const handleDelete = async (row?: BannedVO) => {
|
const handleDelete = async (row?: BannedVO) => {
|
||||||
const _ids = row?.contentId;
|
const _ids = row?.id || ids.value;
|
||||||
const _idsname = row?.contentName;
|
await proxy?.$modal.confirm('是否确认删除举报编号为"' + _ids + '"的数据项?').finally(() => (loading.value = false));
|
||||||
const text = queryParams.value.type == 1 ? '笔记名称为“' : queryParams.value.type == 2 ? '活动名称为“' : '评论内容为“';
|
await delBanned(_ids);
|
||||||
await proxy?.$modal.confirm('是否确认删除' + text + _idsname + '"的数据项?').finally(() => (loading.value = false));
|
|
||||||
await delNotebook(_ids);
|
|
||||||
proxy?.$modal.msgSuccess('删除成功');
|
proxy?.$modal.msgSuccess('删除成功');
|
||||||
await getList();
|
await getList();
|
||||||
};
|
};
|
||||||
|
@ -1,34 +1,35 @@
|
|||||||
<!-- 路线导航管理列表 -->
|
<!-- 路线导航管理列表 -->
|
||||||
<template>
|
<template>
|
||||||
<div class="p-2">
|
<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]">
|
<div v-show="showSearch" id="search_div" class="mb-[10px]">
|
||||||
<el-card shadow="hover">
|
<el-card shadow="hover">
|
||||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true" label-width="70px">
|
<el-form ref="queryFormRef" :model="queryParams" :inline="true" label-width="70px">
|
||||||
<el-form-item label="线路标题" prop="">
|
<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>
|
||||||
<el-form-item label="发布状态" prop="">
|
<el-form-item label="发布状态" prop="">
|
||||||
<el-select v-model="queryParams.status" class="inputWidth" placeholder="请选择发布状态" clearable>
|
<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-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
||||||
<el-button icon="Refresh" @click="resetQuery">重置</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-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
</transition>
|
</transition>
|
||||||
|
|
||||||
<el-table v-loading="loading" :height="autoTableHeight" :data="RouteList" border @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" :height="autoTableHeight" :data="RouteList" border
|
||||||
<el-table-column fixed label="序号" align="center" width="80">
|
@selection-change="handleSelectionChange">
|
||||||
<template #default="scope">
|
<el-table-column label="ID" align="center" prop="id" width="180px" fixed />
|
||||||
<span>{{ (queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1 }}</span>
|
|
||||||
</template>
|
|
||||||
</el-table-column>
|
|
||||||
<el-table-column label="线路标题" align="center" prop="title" width="150px" show-overflow-tooltip 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="" />
|
||||||
<el-table-column label="线路标签" align="center" prop="tagId" width="150px" show-overflow-tooltip>
|
<el-table-column label="线路标签" align="center" prop="tagId" width="150px" show-overflow-tooltip>
|
||||||
@ -79,40 +80,20 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="160px" fixed="right">
|
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="160px" fixed="right">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button
|
<el-button v-if="scope.row.status == 0 || scope.row.status == 1" v-hasPermi="['system:Route:edit']" link
|
||||||
v-if="scope.row.status == 0 || scope.row.status == 1"
|
type="primary" @click="handleUpdate(scope.row)">编辑</el-button>
|
||||||
v-hasPermi="['system:Route:edit']"
|
<el-button v-if="scope.row.status == 0 || scope.row.status == 1" v-hasPermi="['system:Route:remove']" link
|
||||||
link
|
type="primary" @click="handleDelete(scope.row)">删除</el-button>
|
||||||
type="primary"
|
<el-button v-if="scope.row.status == 0" v-hasPermi="['system:Route:remove']" link type="primary"
|
||||||
@click="handleUpdate(scope.row)"
|
@click="savelistrow(scope.row)">发布</el-button>
|
||||||
>编辑</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: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>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
|
|
||||||
<pagination
|
<pagination v-show="total > 0" id="table_page" v-model:page="queryParams.pageNum"
|
||||||
v-show="total > 0"
|
v-model:limit="queryParams.pageSize" :total="total" @pagination="getList" />
|
||||||
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-dialog v-model="dialog.visible" :title="dialog.title" width="60%" append-to-body>
|
||||||
<el-form ref="RouteFormRef" :model="form" :rules="rules" label-width="120px">
|
<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-option v-for="item in sys_user_tagOptions" :key="item.id" :label="item.title" :value="item.id" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="涉及的行政区域" prop="region">
|
<el-form-item label="涉及的行政区域" prop="treevalue">
|
||||||
<el-cascader v-model="treevalue" :options="regiontree" :props="props" clearable placeholder="请选择涉及的行政区域" style="width: 400px" />
|
<el-cascader v-model="treevalue" :options="regiontree" :props="props" clearable placeholder="请选择涉及的行政区域"
|
||||||
|
style="width: 400px" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<div style="display: flex">
|
<div style="display: flex">
|
||||||
<el-form-item label="行程天数" prop="routeDays">
|
<el-form-item label="行程天数" prop="routeDays">
|
||||||
@ -194,13 +176,15 @@
|
|||||||
<el-input v-model="routeDetailsList.title" placeholder="请输入标题" style="width: 500px" />
|
<el-input v-model="routeDetailsList.title" placeholder="请输入标题" style="width: 500px" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="描述">
|
<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>
|
||||||
<el-form-item label="添加地点">
|
<el-form-item label="添加地点">
|
||||||
<el-button type="primary" @click="addjingdain">添加景点</el-button>
|
<el-button type="primary" @click="addjingdain">添加景点</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<div v-for="(item, index) in routeDetailsList.lowerList" class="articlelist">
|
<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-form-item label="添加地点">
|
||||||
<el-select v-model="item.articleId" placeholder="请选择标记地点" size="large" style="width: 500px">
|
<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" />
|
<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' }],
|
routeDriveHour: [{ required: true, message: '行驶时长', trigger: 'blur' }],
|
||||||
routeMileage: [{ required: true, message: '行程里数', trigger: 'blur' }],
|
routeMileage: [{ required: true, message: '行程里数', trigger: 'blur' }],
|
||||||
routeDays: [{ 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' }],
|
tagId: [{ required: true, message: '标签不能为空', trigger: 'blur' }],
|
||||||
title: [{ 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++) {
|
for (let i = 0; i < sys_user_tagOptions.value.length; i++) {
|
||||||
const element = sys_user_tagOptions.value[i];
|
const element = sys_user_tagOptions.value[i];
|
||||||
if (tagId != null) {
|
if (tagId!=null) {
|
||||||
let filteredArray = tagId.split(',').filter((item) => item == element.id);
|
let filteredArray = tagId.split(',').filter((item) => item==element.id);
|
||||||
if (filteredArray.length > 0) {
|
if (filteredArray.length>0) {
|
||||||
tagString += ',' + element.title;
|
tagString += ',' + element.title;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -552,7 +536,7 @@ const handleUpdate = async (row?: RouteVO) => {
|
|||||||
/** 提交按钮 */
|
/** 提交按钮 */
|
||||||
const submitForm = async (type) => {
|
const submitForm = async (type) => {
|
||||||
form.value.tagId = tagvalue?.value.length != 0 ? tagvalue?.value.join(',') : '';
|
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.status = Number(type);
|
||||||
form.value.routeDetailsList = bookrouteDetailsList.value;
|
form.value.routeDetailsList = bookrouteDetailsList.value;
|
||||||
if (type == 1) {
|
if (type == 1) {
|
||||||
|
@ -63,11 +63,6 @@
|
|||||||
|
|
||||||
<el-table :height="autoTableHeight" v-loading="loading" :data="articleList"
|
<el-table :height="autoTableHeight" v-loading="loading" :data="articleList"
|
||||||
@selection-change="handleSelectionChange" border>
|
@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="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" />
|
||||||
<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>
|
<el-button link type="primary" @click="handleDetail(scope.row)">查看</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</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">
|
<template #default="scope">
|
||||||
<el-button link type="primary" v-if="scope.row.status!==3" @click="handleNote(scope.row)">1{{
|
<el-button link type="primary" v-if="scope.row.status!==3" @click="handleNote(scope.row)">11{{
|
||||||
scope.row.pubNotebookCount }}</el-button>
|
scope.row.noteNumber }}</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column :label="queryParams.type == '0' ?'景点评论数':queryParams.type == '1' ?'租车评论数':'游艇评论数'" align="center"
|
<el-table-column label="笔记评论数" align="center" prop="notebookCommentCount" width="90px">
|
||||||
prop="commentCount" width="90px">
|
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button link type="primary" v-if="scope.row.status!==3" @click="handleNote(scope.row)">1{{
|
<el-button link type="primary" v-if="scope.row.status!==3" @click="handleNote(scope.row)">11{{
|
||||||
scope.row.notebookCommentCount }}</el-button>
|
scope.row.noteNumber }}</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column :label="queryParams.type == '0' ?'景点喜欢数':queryParams.type == '1' ?'租车喜欢数':'游艇喜欢数'" align="center"
|
<el-table-column label="笔记点赞数" align="center" prop="notebookAgreeCount" width="90px">
|
||||||
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">
|
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button link type="primary" v-if="scope.row.status!==3" @click="handleNote(scope.row)">1{{
|
<el-button link type="primary" v-if="scope.row.status!==3" @click="handleNote(scope.row)">11{{
|
||||||
scope.row.notebookAgreeCount }}</el-button>
|
scope.row.noteNumber }}</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column> -->
|
</el-table-column>
|
||||||
<!-- 0-未发布 1-审核中 2-发布 -->
|
<!-- 0-未发布 1-审核中 2-发布 -->
|
||||||
<el-table-column label="发布状态" align="center" prop="status" width="100">
|
<el-table-column label="发布状态" align="center" prop="status" width="100">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<!-- <span>{{ scope.row.status == 0 ? '未发布' : scope.row.status == 1 ? '审核中' : scope.row.status == 2 ? '已发布' : '草稿' }}</span> -->
|
<!-- <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 == 0" type="info">未发布</el-tag>
|
||||||
<el-tag v-if="scope.row.status == 1" type="success">审核中</el-tag>
|
<el-tag v-if="scope.row.status == 1" type="warning">审核中</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>
|
||||||
<el-tag v-if="scope.row.status == 3" type="warning">草稿</el-tag>
|
<el-tag v-if="scope.row.status == 3" type="danger">草稿</el-tag>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="操作人" align="center" prop="updateByName" width="120px" />
|
<el-table-column label="操作人" align="center" prop="updateByName" width="120px" />
|
||||||
@ -234,8 +226,7 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="标签" prop="tagId_copy">
|
<el-form-item label="标签" prop="tagId_copy">
|
||||||
<el-select class="inputWidth" v-model="form.tagId_copy" multiple filterable placeholder="请选择标签" clearable
|
<el-select class="inputWidth" v-model="form.tagId_copy" multiple filterable placeholder="请选择标签" clearable>
|
||||||
@visible-change="getTagList">
|
|
||||||
<el-option v-for="dict in sys_user_tagOptions" :key="dict.id" :label="dict.title"
|
<el-option v-for="dict in sys_user_tagOptions" :key="dict.id" :label="dict.title"
|
||||||
:value="String(dict.id)" />
|
:value="String(dict.id)" />
|
||||||
</el-select>
|
</el-select>
|
||||||
@ -253,19 +244,12 @@
|
|||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="地理位置" prop="introduce">
|
<el-form-item label="地理位置" prop="introduce">
|
||||||
<!-- <el-input v-model="searchLocation" type="text" placeholder="请输入地址信息" clearable /> -->
|
<!-- <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)">
|
@keyup.enter="debouncedSearch(searchLocation)">
|
||||||
<template #append>
|
<template #append>
|
||||||
<el-button @click="debouncedSearch(searchLocation)" :icon="Search" />
|
<el-button @click="debouncedSearch(searchLocation)" :icon="Search" />
|
||||||
</template>
|
</template>
|
||||||
</el-input> -->
|
</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-form-item>
|
</el-form-item>
|
||||||
<tlbs-map style="margin-left: 80px" ref="map" api-key="
|
<tlbs-map style="margin-left: 80px" ref="map" api-key="
|
||||||
6XFBZ-SAVLT-JGIX2-VOLMK-6S2H3-XUBGO" :center="center" :zoom="zoom" :control="control" @click="onClick">
|
6XFBZ-SAVLT-JGIX2-VOLMK-6S2H3-XUBGO" :center="center" :zoom="zoom" :control="control" @click="onClick">
|
||||||
@ -414,12 +398,9 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
<!-- 相关笔记 -->
|
<!-- 相关笔记 -->
|
||||||
<el-dialog title="相关笔记" v-model="noteListDialog.visible" width="1200px" append-to-body>
|
<el-dialog title="相关笔记" v-model="noteBookVisible" width="1200px" append-to-body>
|
||||||
<noteList :autoTableHeight="300" :sys_user_tagOptions="sys_user_tagOptions" parentName="scenic"
|
<noteList :autoTableHeight="300" :sys_user_tagOptions="sys_user_tagOptions" :noteBookTagIds="noteBookTagIds"
|
||||||
:articleList="noteListDialog.articleList" :type="queryParams.type" :id="form.id"></noteList>
|
parentName="scenic" :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" />
|
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div class="dialog-footer">
|
<div class="dialog-footer">
|
||||||
<el-button @click="cancel('noteBookVisible')">关 闭</el-button>
|
<el-button @click="cancel('noteBookVisible')">关 闭</el-button>
|
||||||
@ -431,7 +412,7 @@
|
|||||||
|
|
||||||
<script setup name="Article" lang="ts">
|
<script setup name="Article" lang="ts">
|
||||||
import { listTag,tagAll } from '@/api/manage/tag';
|
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 { ArticleVO, ArticleQuery, ArticleForm } from '@/api/manage/scenic/types';
|
||||||
import { useRouter } from 'vue-router';
|
import { useRouter } from 'vue-router';
|
||||||
import { getToken } from '@/utils/auth';
|
import { getToken } from '@/utils/auth';
|
||||||
@ -461,7 +442,6 @@ const dialog = reactive<DialogOption>({
|
|||||||
title: '',
|
title: '',
|
||||||
type:''
|
type:''
|
||||||
});
|
});
|
||||||
const locationOptions = ref([]); //腾讯地图返回的搜索地址列表
|
|
||||||
const noteLists = ref([]); // 相关笔记列表
|
const noteLists = ref([]); // 相关笔记列表
|
||||||
const previewRef = ref(null);
|
const previewRef = ref(null);
|
||||||
const previewVisible = ref(false); //预览弹层
|
const previewVisible = ref(false); //预览弹层
|
||||||
@ -622,37 +602,6 @@ const getTag = async () => {
|
|||||||
const res = await tagAll();
|
const res = await tagAll();
|
||||||
sys_user_tagOptions.value = res; //标签库
|
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) => {
|
const performSearch = async (text) => {
|
||||||
// 这里简单模拟延迟,模拟真实的异步请求耗时
|
// 这里简单模拟延迟,模拟真实的异步请求耗时
|
||||||
@ -661,14 +610,16 @@ const performSearch = async (text) => {
|
|||||||
if (text === '') {
|
if (text === '') {
|
||||||
console.log('搜索内容为空');
|
console.log('搜索内容为空');
|
||||||
} else {
|
} else {
|
||||||
// console.log('搜索内容为:', text);
|
console.log('搜索内容为:', text);
|
||||||
// 调用腾讯地图API进行搜索,并展示在地图上
|
// 调用腾讯地图API进行搜索,并展示在地图上
|
||||||
// geocoder(text).then((result) => {
|
// geocoder(text).then((result) => {
|
||||||
// console.log(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) => {
|
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) {
|
if (data.status == 0) {
|
||||||
|
center.value.lat = data.result.location.lat;
|
||||||
|
center.value.lng = data.result.location.lng;
|
||||||
form.value.address =
|
form.value.address =
|
||||||
data.result.address_components.province +
|
data.result.address_components.province +
|
||||||
data.result.address_components.city +
|
data.result.address_components.city +
|
||||||
@ -682,7 +633,6 @@ const performSearch = async (text) => {
|
|||||||
|
|
||||||
// form.value.province = data.result.address_components.province;
|
// form.value.province = data.result.address_components.province;
|
||||||
// form.value.city = data.result.address_components.city;
|
// 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 } }];
|
geometries.value = [{ styleId: 'marker', position: { lat: data.result.location.lat, lng: data.result.location.lng } }];
|
||||||
} else if (data.status == 348) {
|
} else if (data.status == 348) {
|
||||||
//地址信息不明确,需弹出提示
|
//地址信息不明确,需弹出提示
|
||||||
@ -712,8 +662,9 @@ const onClick = (e: any) => {
|
|||||||
// form.value.city = data.result.address_component.city;
|
// form.value.city = data.result.address_component.city;
|
||||||
form.value.region = data.result.ad_info.adcode; //行政区划编码
|
form.value.region = data.result.ad_info.adcode; //行政区划编码
|
||||||
form.value.regionCode = 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;
|
||||||
searchLocation.value = data.result.formatted_addresses?.recommend;
|
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 } }];
|
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();
|
queryParams.value.tagId = queryParams.value.tagId.toString();
|
||||||
}
|
}
|
||||||
const res = await listArticle(queryParams.value).finally(() => (loading.value = false));
|
const res = await listArticle(queryParams.value).finally(() => (loading.value = false));
|
||||||
articleList.value=[];
|
|
||||||
res.rows.forEach((element: any) => {
|
res.rows.forEach((element: any) => {
|
||||||
if (element.region == null) {
|
if (element.region == null) {
|
||||||
element.region = element.city;
|
element.region = element.city;
|
||||||
@ -752,8 +702,6 @@ const cancel = (type: string) => {
|
|||||||
dialog.visible = false;
|
dialog.visible = false;
|
||||||
noteBookVisible.value = false;
|
noteBookVisible.value = false;
|
||||||
noteBookTagIds.value = ''; // 清空标签
|
noteBookTagIds.value = ''; // 清空标签
|
||||||
noteListDialog.visible = false;
|
|
||||||
noteListDialog.params.pageNum=1;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/** 表单重置 */
|
/** 表单重置 */
|
||||||
@ -884,26 +832,11 @@ const handleDetail = async (row?: ArticleVO) => {
|
|||||||
*/
|
*/
|
||||||
const noteBookVisible = ref(false);
|
const noteBookVisible = ref(false);
|
||||||
const noteBookTagIds = ref(''); //相关笔记的标签id
|
const noteBookTagIds = ref(''); //相关笔记的标签id
|
||||||
const noteListDialog = reactive({
|
|
||||||
visible: false,
|
|
||||||
total: 0,
|
|
||||||
articleList:[],
|
|
||||||
params:{
|
|
||||||
articleId: null,
|
|
||||||
pageNum: 1,
|
|
||||||
pageSize: 10,
|
|
||||||
}
|
|
||||||
});
|
|
||||||
// 相关笔记 请求列表
|
|
||||||
const handleNote = async (row?: ArticleVO) => {
|
const handleNote = async (row?: ArticleVO) => {
|
||||||
// noteBookTagIds.value = '';
|
noteBookTagIds.value = '';
|
||||||
// noteBookTagIds.value = row?.tagId as string;
|
noteBookTagIds.value = row?.tagId as string;
|
||||||
if (row.id) {
|
noteBookVisible.value = true;
|
||||||
noteListDialog.params.articleId = row?.id;
|
console.log(row.tagId);
|
||||||
}
|
|
||||||
let res = await recommend(noteListDialog.params);
|
|
||||||
noteListDialog.articleList=res.rows;
|
|
||||||
noteListDialog.visible = true;
|
|
||||||
};
|
};
|
||||||
/** 新增景点,商家提交按钮 */
|
/** 新增景点,商家提交按钮 */
|
||||||
const submitForm = async (type: string) => {
|
const submitForm = async (type: string) => {
|
||||||
@ -920,8 +853,7 @@ const submitForm = async (type: string) => {
|
|||||||
if (form.value.id) {
|
if (form.value.id) {
|
||||||
await updateArticle(form.value).finally(() => (buttonLoading.value = false));
|
await updateArticle(form.value).finally(() => (buttonLoading.value = false));
|
||||||
} else {
|
} else {
|
||||||
let res = await addArticle(form.value).finally(() => (buttonLoading.value = false));
|
await addArticle(form.value).finally(() => (buttonLoading.value = false));
|
||||||
form.value.id = res.msg;
|
|
||||||
}
|
}
|
||||||
proxy?.$modal.msgSuccess('操作成功');
|
proxy?.$modal.msgSuccess('操作成功');
|
||||||
// dialog.visible = false;
|
// dialog.visible = false;
|
||||||
|
@ -29,11 +29,6 @@
|
|||||||
|
|
||||||
<el-table v-loading="loading" :height="autoTableHeight" :data="tagList" @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" :height="autoTableHeight" :data="tagList" @selection-change="handleSelectionChange">
|
||||||
<!-- <el-table-column type="selection" width="55" align="center" /> -->
|
<!-- <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="标签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="title" />
|
||||||
<el-table-column label="排序" align="center" prop="sort" />
|
<el-table-column label="排序" align="center" prop="sort" />
|
||||||
@ -101,8 +96,7 @@ const tagFormRef = ref<ElFormInstance>();
|
|||||||
|
|
||||||
const dialog = reactive<DialogOption>({
|
const dialog = reactive<DialogOption>({
|
||||||
visible: false,
|
visible: false,
|
||||||
title: '',
|
title: ''
|
||||||
type:''
|
|
||||||
});
|
});
|
||||||
|
|
||||||
const initFormData: TagForm = {
|
const initFormData: TagForm = {
|
||||||
@ -114,7 +108,7 @@ const data = reactive<PageData<TagForm, TagQuery>>({
|
|||||||
form: { ...initFormData },
|
form: { ...initFormData },
|
||||||
queryParams: {
|
queryParams: {
|
||||||
pageNum: 1,
|
pageNum: 1,
|
||||||
pageSize: 20,
|
pageSize: 10,
|
||||||
title: undefined,
|
title: undefined,
|
||||||
sort: undefined,
|
sort: undefined,
|
||||||
params: {}
|
params: {}
|
||||||
|
@ -52,9 +52,7 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="状态" align="center" prop="status">
|
<el-table-column label="状态" align="center" prop="status">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<!-- <dict-tag :options="dy_user_level_status" :value="scope.row.status" /> -->
|
<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>
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<!-- <el-table-column label="等级名称" align="center" prop="levelName" />
|
<!-- <el-table-column label="等级名称" align="center" prop="levelName" />
|
||||||
@ -144,7 +142,7 @@ const data = reactive<PageData<UserLevelForm, UserLevelQuery>>({
|
|||||||
form: { ...initFormData },
|
form: { ...initFormData },
|
||||||
queryParams: {
|
queryParams: {
|
||||||
pageNum: 1,
|
pageNum: 1,
|
||||||
pageSize: 20,
|
pageSize: 10,
|
||||||
levelName: undefined,
|
levelName: undefined,
|
||||||
status: undefined,
|
status: undefined,
|
||||||
score: undefined,
|
score: undefined,
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
<!-- 积分记录 -->
|
|
||||||
<template>
|
<template>
|
||||||
<div class="p-2">
|
<div class="p-2">
|
||||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter"
|
<transition :enter-active-class="proxy?.animate.searchAnimate.enter"
|
||||||
@ -38,6 +37,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</transition>
|
</transition>
|
||||||
|
|
||||||
|
<el-card shadow="never">
|
||||||
<el-table v-loading="loading" :height="autoTableHeight" :data="userScoreList"
|
<el-table v-loading="loading" :height="autoTableHeight" :data="userScoreList"
|
||||||
@selection-change="handleSelectionChange">
|
@selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column type="selection" width="55" align="center" />
|
||||||
@ -60,6 +60,7 @@
|
|||||||
|
|
||||||
<pagination v-show="total > 0" id="table_page" :total="total" v-model:page="queryParams.pageNum"
|
<pagination v-show="total > 0" id="table_page" :total="total" v-model:page="queryParams.pageNum"
|
||||||
v-model:limit="queryParams.pageSize" @pagination="getList" />
|
v-model:limit="queryParams.pageSize" @pagination="getList" />
|
||||||
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -72,21 +72,21 @@
|
|||||||
删除
|
删除
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
<!-- <el-col :span="1.5">-->
|
<el-col :span="1.5">
|
||||||
<!-- <el-dropdown class="mt-[1px]">-->
|
<el-dropdown class="mt-[1px]">
|
||||||
<!-- <el-button plain type="info">-->
|
<el-button plain type="info">
|
||||||
<!-- 更多-->
|
更多
|
||||||
<!-- <el-icon class="el-icon--right"><arrow-down /></el-icon-->
|
<el-icon class="el-icon--right"><arrow-down /></el-icon
|
||||||
<!-- ></el-button>-->
|
></el-button>
|
||||||
<!-- <template #dropdown>-->
|
<template #dropdown>
|
||||||
<!-- <el-dropdown-menu>-->
|
<el-dropdown-menu>
|
||||||
<!-- <el-dropdown-item icon="Download" @click="importTemplate">下载模板</el-dropdown-item>-->
|
<el-dropdown-item icon="Download" @click="importTemplate">下载模板</el-dropdown-item>
|
||||||
<!-- <el-dropdown-item icon="Top" @click="handleImport"> 导入数据</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-item icon="Download" @click="handleExport"> 导出数据</el-dropdown-item>
|
||||||
<!-- </el-dropdown-menu>-->
|
</el-dropdown-menu>
|
||||||
<!-- </template>-->
|
</template>
|
||||||
<!-- </el-dropdown>-->
|
</el-dropdown>
|
||||||
<!-- </el-col>-->
|
</el-col>
|
||||||
<right-toolbar v-model:showSearch="showSearch" :columns="columns" :search="true" @query-table="getList"></right-toolbar>
|
<right-toolbar v-model:showSearch="showSearch" :columns="columns" :search="true" @query-table="getList"></right-toolbar>
|
||||||
</el-row>
|
</el-row>
|
||||||
</template>
|
</template>
|
||||||
|
Loading…
Reference in New Issue
Block a user