添加明信片类别及详情管理API和界面
This commit is contained in:
parent
cd73a82baa
commit
7c50b43949
63
src/api/manage/index.ts
Normal file
63
src/api/manage/index.ts
Normal file
@ -0,0 +1,63 @@
|
||||
import request from '@/utils/request';
|
||||
import { AxiosPromise } from 'axios';
|
||||
import { MkPostcardDetailVO, MkPostcardDetailForm, MkPostcardDetailQuery } from '@/api/manage/mkPostcardDetail/types';
|
||||
|
||||
/**
|
||||
* 查询明信片详情列表
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const listMkPostcardDetail = (query?: MkPostcardDetailQuery): AxiosPromise<MkPostcardDetailVO[]> => {
|
||||
return request({
|
||||
url: '/manage/mkPostcardDetail/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询明信片详情详细
|
||||
* @param id
|
||||
*/
|
||||
export const getMkPostcardDetail = (id: string | number): AxiosPromise<MkPostcardDetailVO> => {
|
||||
return request({
|
||||
url: '/manage/mkPostcardDetail/' + id,
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 新增明信片详情
|
||||
* @param data
|
||||
*/
|
||||
export const addMkPostcardDetail = (data: MkPostcardDetailForm) => {
|
||||
return request({
|
||||
url: '/manage/mkPostcardDetail',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 修改明信片详情
|
||||
* @param data
|
||||
*/
|
||||
export const updateMkPostcardDetail = (data: MkPostcardDetailForm) => {
|
||||
return request({
|
||||
url: '/manage/mkPostcardDetail',
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除明信片详情
|
||||
* @param id
|
||||
*/
|
||||
export const delMkPostcardDetail = (id: string | number | Array<string | number>) => {
|
||||
return request({
|
||||
url: '/manage/mkPostcardDetail/' + id,
|
||||
method: 'delete'
|
||||
});
|
||||
};
|
76
src/api/manage/mkPostcard/index.ts
Normal file
76
src/api/manage/mkPostcard/index.ts
Normal file
@ -0,0 +1,76 @@
|
||||
import request from '@/utils/request';
|
||||
import { AxiosPromise } from 'axios';
|
||||
import { MkPostcardVO, MkPostcardForm, MkPostcardQuery } from '@/api/manage/mkPostcard/types';
|
||||
|
||||
/**
|
||||
* 查询明信片类别列表
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const listMkPostcard = (query?: MkPostcardQuery): AxiosPromise<MkPostcardVO[]> => {
|
||||
return request({
|
||||
url: '/manage/mkPostcard/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询明信片类别详细
|
||||
* @param id
|
||||
*/
|
||||
export const getMkPostcard = (id: string | number): AxiosPromise<MkPostcardVO> => {
|
||||
return request({
|
||||
url: '/manage/mkPostcard/' + id,
|
||||
method: 'get'
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 新增明信片类别
|
||||
* @param data
|
||||
*/
|
||||
export const addMkPostcard = (data: MkPostcardForm) => {
|
||||
return request({
|
||||
url: '/manage/mkPostcard',
|
||||
method: 'post',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 修改明信片类别
|
||||
* @param data
|
||||
*/
|
||||
export const updateMkPostcard = (data: MkPostcardForm) => {
|
||||
return request({
|
||||
url: '/manage/mkPostcard',
|
||||
method: 'put',
|
||||
data: data
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除明信片类别
|
||||
* @param id
|
||||
*/
|
||||
export const delMkPostcard = (id: string | number | Array<string | number>) => {
|
||||
return request({
|
||||
url: '/manage/mkPostcard/' + id,
|
||||
method: 'delete'
|
||||
});
|
||||
};
|
||||
/**
|
||||
* 查询明信片详情列表
|
||||
* @param query
|
||||
* @returns {*}
|
||||
*/
|
||||
|
||||
export const listMkPostcardDetail = (query?: any) => {
|
||||
return request({
|
||||
url: '/manage/mkPostcardDetail/list',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
91
src/api/manage/mkPostcard/types.ts
Normal file
91
src/api/manage/mkPostcard/types.ts
Normal file
@ -0,0 +1,91 @@
|
||||
export interface MkPostcardVO {
|
||||
/**
|
||||
* ID
|
||||
*/
|
||||
id: string | number;
|
||||
|
||||
/**
|
||||
* 明信片类别名称
|
||||
*/
|
||||
name: string;
|
||||
|
||||
/**
|
||||
* 关联景点ID
|
||||
*/
|
||||
articleId: string | number;
|
||||
|
||||
/**
|
||||
* 状态 0-未上架 1-已上架
|
||||
*/
|
||||
status: number | string;
|
||||
|
||||
/**
|
||||
* 排序
|
||||
*/
|
||||
sortNum: number;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
createBy: number;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
createTime: string;
|
||||
}
|
||||
|
||||
export interface MkPostcardForm extends BaseEntity {
|
||||
/**
|
||||
* ID
|
||||
*/
|
||||
id?: string | number;
|
||||
postcardImage?: string;
|
||||
coverImage?: string;
|
||||
/**
|
||||
* 明信片类别名称
|
||||
*/
|
||||
name?: string;
|
||||
|
||||
/**
|
||||
* 关联景点ID
|
||||
*/
|
||||
articleId?: string | number;
|
||||
|
||||
/**
|
||||
* 状态 0-未上架 1-已上架
|
||||
*/
|
||||
status?: number | string;
|
||||
|
||||
/**
|
||||
* 排序
|
||||
*/
|
||||
sortNum?: number;
|
||||
}
|
||||
|
||||
export interface MkPostcardQuery extends PageQuery {
|
||||
/**
|
||||
* 明信片类别名称
|
||||
*/
|
||||
name?: string;
|
||||
|
||||
/**
|
||||
* 关联景点ID
|
||||
*/
|
||||
articleId?: string | number;
|
||||
|
||||
/**
|
||||
* 状态 0-未上架 1-已上架
|
||||
*/
|
||||
status?: number;
|
||||
|
||||
/**
|
||||
* 排序
|
||||
*/
|
||||
sortNum?: number;
|
||||
|
||||
/**
|
||||
* 日期范围参数
|
||||
*/
|
||||
params?: any;
|
||||
}
|
@ -15,7 +15,18 @@ export const listArticle = (query?: ArticleQuery): AxiosPromise<ArticleVO[]> =>
|
||||
params: query
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询景点管理下拉列表 不分页
|
||||
* @param query
|
||||
* @returns
|
||||
*/
|
||||
export const contentAll = (query?: any) => {
|
||||
return request({
|
||||
url: '/manage/content/all',
|
||||
method: 'get',
|
||||
params: query
|
||||
});
|
||||
};
|
||||
/**
|
||||
* 查询景点管理详细
|
||||
* @param id
|
||||
|
@ -1,7 +1,8 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-dialog v-model="roleDialog.visible.value" :title="roleDialog.title.value" width="80%" append-to-body>
|
||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter"
|
||||
:leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||
<div v-show="showSearch" class="mb-[10px]">
|
||||
<el-card shadow="hover">
|
||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
||||
@ -23,24 +24,15 @@
|
||||
|
||||
<el-card shadow="hover">
|
||||
<template #header>
|
||||
<el-tag v-for="role in selectRoleList" :key="role.roleId" closable style="margin: 2px" @close="handleCloseTag(role)">
|
||||
<el-tag v-for="role in selectRoleList" :key="role.roleId" closable style="margin: 2px"
|
||||
@close="handleCloseTag(role)">
|
||||
{{ role.roleName }}
|
||||
</el-tag>
|
||||
</template>
|
||||
|
||||
<vxe-table
|
||||
ref="tableRef"
|
||||
height="400px"
|
||||
border
|
||||
show-overflow
|
||||
:data="roleList"
|
||||
:loading="loading"
|
||||
:row-config="{ keyField: 'roleId' }"
|
||||
:checkbox-config="{ reserve: true, checkRowKeys: defaultSelectRoleIds }"
|
||||
highlight-current-row
|
||||
@checkbox-all="handleCheckboxAll"
|
||||
@checkbox-change="handleCheckboxChange"
|
||||
>
|
||||
<vxe-table ref="tableRef" height="400px" border show-overflow :data="roleList" :loading="loading"
|
||||
:row-config="{ keyField: 'roleId' }" :checkbox-config="{ reserve: true, checkRowKeys: defaultSelectRoleIds }"
|
||||
highlight-current-row @checkbox-all="handleCheckboxAll" @checkbox-change="handleCheckboxChange">
|
||||
<vxe-column type="checkbox" width="50" align="center" />
|
||||
<vxe-column v-if="false" key="roleId" label="角色编号" />
|
||||
<vxe-column field="roleName" title="角色名称" />
|
||||
@ -53,18 +45,14 @@
|
||||
</vxe-column>
|
||||
<vxe-column field="createTime" title="创建时间" align="center">
|
||||
<template #default="scope">
|
||||
<span>{{ parseTime(scope.row.createTime) }}</span>
|
||||
<!-- <span>{{ parseTime(scope.row.createTime) }}</span> -->
|
||||
<span>{{ scope.row.createTime }}</span>
|
||||
</template>
|
||||
</vxe-column>
|
||||
</vxe-table>
|
||||
|
||||
<pagination
|
||||
v-if="total > 0"
|
||||
v-model:total="total"
|
||||
v-model:page="queryParams.pageNum"
|
||||
v-model:limit="queryParams.pageSize"
|
||||
@pagination="pageList"
|
||||
/>
|
||||
<pagination v-if="total > 0" v-model:total="total" v-model:page="queryParams.pageNum"
|
||||
v-model:limit="queryParams.pageSize" @pagination="pageList" />
|
||||
</el-card>
|
||||
<template #footer>
|
||||
<el-button @click="close">取消</el-button>
|
||||
|
@ -63,7 +63,8 @@
|
||||
</el-table-column>
|
||||
<el-table-column label="更新时间" align="center" prop="updateTime" width="120">
|
||||
<template #default="scope">
|
||||
<span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d}') }}</span>
|
||||
<!-- <span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d}') }}</span> -->
|
||||
<span>{{ scope.row.updateTime }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="160px">
|
||||
|
@ -1,15 +1,18 @@
|
||||
<!-- 用户列表 -->
|
||||
<template>
|
||||
<div class="p-2">
|
||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter"
|
||||
:leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||
<div v-show="showSearch" class="mb-[10px]" id="search_div">
|
||||
<el-card shadow="hover">
|
||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true" label-width="80px">
|
||||
<el-form-item label="用户昵称" prop="nickName">
|
||||
<el-input class="inputWidth" v-model="queryParams.nickName" placeholder="请输入用户昵称" clearable @keyup.enter="handleQuery" />
|
||||
<el-input class="inputWidth" v-model="queryParams.nickName" placeholder="请输入用户昵称" clearable
|
||||
@keyup.enter="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="手机号码" prop="phone">
|
||||
<el-input class="inputWidth" v-model="queryParams.phone" placeholder="请输入手机号码" clearable @keyup.enter="handleQuery" />
|
||||
<el-input class="inputWidth" v-model="queryParams.phone" placeholder="请输入手机号码" clearable
|
||||
@keyup.enter="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="用户性别" prop="sex">
|
||||
<el-select class="inputWidth" v-model="queryParams.sex" placeholder="请选择用户性别" clearable>
|
||||
@ -22,7 +25,8 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="会员等级" prop="leveId">
|
||||
<el-input class="inputWidth" v-model="queryParams.leveId" placeholder="请输入会员等级" clearable @keyup.enter="handleQuery" />
|
||||
<el-input class="inputWidth" v-model="queryParams.leveId" placeholder="请输入会员等级" clearable
|
||||
@keyup.enter="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
||||
@ -30,16 +34,16 @@
|
||||
<!-- <el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['manage:dyUser:edit']"
|
||||
>封禁</el-button
|
||||
> -->
|
||||
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['manage:dyUser:remove']"
|
||||
>注销</el-button
|
||||
>
|
||||
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()"
|
||||
v-hasPermi="['manage:dyUser:remove']">注销</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
</div>
|
||||
</transition>
|
||||
|
||||
<el-table :height="autoTableHeight" v-loading="loading" :data="dyUserList" @selection-change="handleSelectionChange" style="width: 100%" border>
|
||||
<el-table :height="autoTableHeight" v-loading="loading" :data="dyUserList" @selection-change="handleSelectionChange"
|
||||
style="width: 100%" border>
|
||||
<el-table-column fixed type="selection" width="55" align="center" />
|
||||
<el-table-column fixed label="用户ID" align="center" prop="id" />
|
||||
<el-table-column fixed label="帐号状态" align="center" prop="status">
|
||||
@ -68,7 +72,8 @@
|
||||
<el-table-column width="130" label="绑定微信账号" align="center" prop="openId" />
|
||||
<el-table-column label="生日" align="center" prop="birthday" width="100">
|
||||
<template #default="scope">
|
||||
<span>{{ parseTime(scope.row.birthday, '{y}-{m}-{d}') }}</span>
|
||||
<!-- <span>{{ parseTime(scope.row.birthday, '{y}-{m}-{d}') }}</span> -->
|
||||
<span>{{ scope.row.birthday }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column width="55" label="年龄" align="center" prop="age" />
|
||||
@ -79,29 +84,34 @@
|
||||
<el-table-column width="80" label="IP形象" align="center" prop="" />
|
||||
<el-table-column width="80" label="发布笔记" align="center" prop="">
|
||||
<template #default="scope">
|
||||
<span style="color: dodgerblue; cursor: pointer; text-decoration: underline" @click="openNoteListDialog(scope.row)">12</span>
|
||||
<span style="color: dodgerblue; cursor: pointer; text-decoration: underline"
|
||||
@click="openNoteListDialog(scope.row)">12</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column width="90" label="发布的活动" align="center" prop="">
|
||||
<template #default="scope">
|
||||
<span style="color: dodgerblue; cursor: pointer; text-decoration: underline" @click="openPartyListDialog(scope.row)">15</span>
|
||||
<span style="color: dodgerblue; cursor: pointer; text-decoration: underline"
|
||||
@click="openPartyListDialog(scope.row)">15</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column width="80" label="关注的人" align="center" prop="" />
|
||||
<el-table-column width="80" label="粉丝数" align="center" prop="" />
|
||||
<el-table-column width="90" label="点亮的景点" align="center" prop="">
|
||||
<template #default="scope">
|
||||
<span style="color: dodgerblue; cursor: pointer; text-decoration: underline" @click="openScenicListDialog(scope.row)">20</span>
|
||||
<span style="color: dodgerblue; cursor: pointer; text-decoration: underline"
|
||||
@click="openScenicListDialog(scope.row)">20</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column width="90" label="点亮的城市" align="center" prop="">
|
||||
<template #default="scope">
|
||||
<span style="color: dodgerblue; cursor: pointer; text-decoration: underline" @click="openCityListDialog(scope.row)">25</span>
|
||||
<span style="color: dodgerblue; cursor: pointer; text-decoration: underline"
|
||||
@click="openCityListDialog(scope.row)">25</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column width="110" label="获得的明信片" align="center" prop="">
|
||||
<template #default="scope">
|
||||
<span style="color: dodgerblue; cursor: pointer; text-decoration: underline" @click="openPostcardListDialog(scope.row)">12</span>
|
||||
<span style="color: dodgerblue; cursor: pointer; text-decoration: underline"
|
||||
@click="openPostcardListDialog(scope.row)">12</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column width="80" label="我的愿望" align="center" prop="" />
|
||||
@ -115,7 +125,8 @@
|
||||
</el-table-column>
|
||||
<el-table-column width="80" label="邀请人数" align="center" prop="">
|
||||
<template #default="scope">
|
||||
<span style="color: dodgerblue; cursor: pointer; text-decoration: underline" @click="openInviteListDialog(scope.row)">35</span>
|
||||
<span style="color: dodgerblue; cursor: pointer; text-decoration: underline"
|
||||
@click="openInviteListDialog(scope.row)">35</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column width="80" label="处理方式" align="center" prop="" />
|
||||
@ -135,30 +146,27 @@
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<pagination
|
||||
id="table_page"
|
||||
v-show="total > 0"
|
||||
:total="total"
|
||||
v-model:page="queryParams.pageNum"
|
||||
v-model:limit="queryParams.pageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
<pagination id="table_page" v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
|
||||
v-model:limit="queryParams.pageSize" @pagination="getList" />
|
||||
<!-- 添加或修改C端用户信息对话框 -->
|
||||
<el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body center>
|
||||
<el-form ref="dyUserFormRef" :model="form" :rules="rules" label-width="80px">
|
||||
<el-form-item label="封禁原因" prop="reason">
|
||||
<el-select v-model="form.reason" placeholder="请选择封禁原因">
|
||||
<el-option v-for="dict in dy_user_ban_mode" :key="dict.value" :label="dict.label" :value="parseInt(dict.value)"></el-option>
|
||||
<el-option v-for="dict in dy_user_ban_mode" :key="dict.value" :label="dict.label"
|
||||
:value="parseInt(dict.value)"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="处理方式" prop="status">
|
||||
<el-radio-group v-model="form.status">
|
||||
<el-radio v-for="dict in dy_user_status" :key="dict.value" :label="dict.label" :value="parseInt(dict.value)">{{ dict.label }}</el-radio>
|
||||
<el-radio v-for="dict in dy_user_status" :key="dict.value" :label="dict.label"
|
||||
:value="parseInt(dict.value)">{{ dict.label }}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="处理天数" prop="banDays">
|
||||
<el-select v-model="form.banDays" placeholder="请选择封禁天数">
|
||||
<el-option v-for="dict in dy_user_ban_days" :key="dict.value" :label="dict.label" :value="parseInt(dict.value)"></el-option>
|
||||
<el-option v-for="dict in dy_user_ban_days" :key="dict.value" :label="dict.label"
|
||||
:value="parseInt(dict.value)"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
@ -512,12 +520,15 @@ const bannedUser = async () => {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.inputWidth {
|
||||
width: 130px;
|
||||
}
|
||||
|
||||
.el-card :deep(.el-card__body) {
|
||||
padding-bottom: 0px !important;
|
||||
}
|
||||
|
||||
#table_page {
|
||||
height: 50px !important;
|
||||
margin-top: 10px !important;
|
||||
|
@ -9,7 +9,7 @@
|
||||
<el-input class="inputWidth" v-model="queryParams.remark" placeholder="请输入反馈内容" clearable
|
||||
@keyup.enter="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="用户昵称" prop="userId">
|
||||
<el-form-item label="用户昵称" prop="nickName">
|
||||
<el-input v-model="queryParams.nickName" class="inputWidth" placeholder="请输入用户昵称" clearable
|
||||
@keyup.enter="handleQuery" />
|
||||
</el-form-item>
|
||||
@ -35,7 +35,8 @@
|
||||
<el-table-column label="联系方式" align="center" prop="contact" width="120px" />
|
||||
<el-table-column label="反馈时间" align="center" prop="updateTime" width="180">
|
||||
<template #default="scope">
|
||||
<span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d}') }}</span>
|
||||
<!-- <span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d}') }}</span> -->
|
||||
<span>{{ scope.row.updateTime }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
@ -1,6 +1,7 @@
|
||||
<template>
|
||||
<div class="p-2">
|
||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter"
|
||||
:leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||
<div v-show="showSearch" class="mb-[10px]">
|
||||
<el-card shadow="hover">
|
||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
||||
@ -23,16 +24,20 @@
|
||||
<template #header>
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['manage:ipImage:add']">新增</el-button>
|
||||
<el-button type="primary" plain icon="Plus" @click="handleAdd"
|
||||
v-hasPermi="['manage:ipImage:add']">新增</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['manage:ipImage:edit']">修改</el-button>
|
||||
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()"
|
||||
v-hasPermi="['manage:ipImage:edit']">修改</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['manage:ipImage:remove']">删除</el-button>
|
||||
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()"
|
||||
v-hasPermi="['manage:ipImage:remove']">删除</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="warning" plain icon="Download" @click="handleExport" v-hasPermi="['manage:ipImage:export']">导出</el-button>
|
||||
<el-button type="warning" plain icon="Download" @click="handleExport"
|
||||
v-hasPermi="['manage:ipImage:export']">导出</el-button>
|
||||
</el-col>
|
||||
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
|
||||
</el-row>
|
||||
@ -46,22 +51,26 @@
|
||||
<el-table-column label="创建者" align="center" prop="createBy" />
|
||||
<el-table-column label="创建时间" align="center" prop="createTime" width="180">
|
||||
<template #default="scope">
|
||||
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
|
||||
<!-- <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span> -->
|
||||
<span>{{ scope.row.createTime }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<template #default="scope">
|
||||
<el-tooltip content="修改" placement="top">
|
||||
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['manage:ipImage:edit']"></el-button>
|
||||
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)"
|
||||
v-hasPermi="['manage:ipImage:edit']"></el-button>
|
||||
</el-tooltip>
|
||||
<el-tooltip content="删除" placement="top">
|
||||
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['manage:ipImage:remove']"></el-button>
|
||||
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)"
|
||||
v-hasPermi="['manage:ipImage:remove']"></el-button>
|
||||
</el-tooltip>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
|
||||
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
|
||||
v-model:limit="queryParams.pageSize" @pagination="getList" />
|
||||
</el-card>
|
||||
<!-- 添加或修改IP形象对话框 -->
|
||||
<el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
|
||||
|
@ -42,7 +42,8 @@
|
||||
<el-table-column label="创建者" align="center" prop="createName" />
|
||||
<el-table-column label="创建时间" align="center" prop="createTime" width="180">
|
||||
<template #default="scope">
|
||||
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
|
||||
<!-- <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span> -->
|
||||
<span>{{ scope.row.createTime }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
@ -149,7 +150,7 @@
|
||||
<el-table-column prop="nickName" label="昵称" width="170" />
|
||||
<el-table-column prop="" label="获得奖品" width="100">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" @click="">查看详情</el-button>
|
||||
<el-button link type="primary" @click="getproductInfo(scope.row.productId)">查看详情</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="" label="邀请人数" width="80">
|
||||
@ -165,13 +166,59 @@
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
<!-- 奖品详情 -->
|
||||
<el-dialog title="奖品详情" v-model="productInfo.visible" width="600px" append-to-body>
|
||||
<div>
|
||||
<el-form ref="" :model="productInfo.form" label-width="70px">
|
||||
<el-row :gutter="10" style="margin-bottom: 10px; margin-right: 5px !important">
|
||||
<el-col :span="8">
|
||||
<el-form-item label="商品名称" prop="">
|
||||
<span>{{ productInfo.form.productName }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="商品类别" prop="">
|
||||
<span>{{ formatCategoryName(productInfo.form.categoryId) }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="供应商" prop="">
|
||||
<span>{{ formatVendorName(productInfo.form.vendorId) }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="商品图片" prop="">
|
||||
<image-preview :src="productInfo.form.image" :width="100" :height="100" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="商品说明" prop="">
|
||||
<span>{{ productInfo.form.productShows }}</span>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button @click="cancelProductInfo()">关 闭</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup name="MkConfig" lang="ts">
|
||||
import { listMkConfig, getMkConfig, delMkConfig, addMkConfig, updateMkConfig,mkRewardUserList } from '@/api/manage/mkConfig';
|
||||
import { MkConfigVO, MkConfigQuery, MkConfigForm } from '@/api/manage/mkConfig/types';
|
||||
|
||||
import { getProduct } from '@/api/manage/product';
|
||||
import { listProductCategory } from '@/api/manage/productCategory';
|
||||
import { listVendor } from '@/api/manage/vendor';
|
||||
onMounted(() => {
|
||||
getList();
|
||||
getlistVendor(); //供应商列表
|
||||
getProductCategoryList(); //商品类别列表
|
||||
});
|
||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||
|
||||
const mkConfigList = ref<MkConfigVO[]>([]);
|
||||
@ -198,6 +245,16 @@ const mkRewardUserParams = reactive({
|
||||
pageSize: 10,
|
||||
bizId:null,
|
||||
})
|
||||
const productInfo = reactive({
|
||||
visible: false,
|
||||
form:{
|
||||
image:null,
|
||||
vendorId:null,
|
||||
categoryId:null,
|
||||
productName:null,
|
||||
productShows:null
|
||||
}
|
||||
})
|
||||
const initFormData: MkConfigForm = {
|
||||
id: undefined,
|
||||
name: undefined,
|
||||
@ -229,7 +286,6 @@ const data = reactive<PageData<MkConfigForm, MkConfigQuery>>({
|
||||
rules: {
|
||||
}
|
||||
});
|
||||
|
||||
const { queryParams, form, rules } = toRefs(data);
|
||||
// 路由监听================================================
|
||||
let router = useRouter();
|
||||
@ -259,7 +315,10 @@ const cancel = () => {
|
||||
dialog.visible = false;
|
||||
mkReward.visible = false;
|
||||
}
|
||||
|
||||
//关闭奖品详情
|
||||
const cancelProductInfo = () => {
|
||||
productInfo.visible = false;
|
||||
}
|
||||
/** 表单重置 */
|
||||
const reset = () => {
|
||||
form.value = {...initFormData};
|
||||
@ -405,9 +464,55 @@ const amendRoundConfig= async (index:number,type:string) => {
|
||||
form.value.roundConfig.splice(index,1)
|
||||
}
|
||||
}
|
||||
onMounted(() => {
|
||||
getList();
|
||||
});
|
||||
/**
|
||||
* 查看奖品详情
|
||||
* @param productId
|
||||
*/
|
||||
const getproductInfo = async (productId: any) => {
|
||||
const res = await getProduct(productId);
|
||||
productInfo.form = res.data;
|
||||
productInfo.visible = true;
|
||||
}
|
||||
/**
|
||||
* 商品类别列表
|
||||
*/
|
||||
const productCategoryList = ref([]);
|
||||
const getProductCategoryList = async () => {
|
||||
let res = await listProductCategory({ pageNum: 1, pageSize: 9999 });
|
||||
productCategoryList.value = res.rows;
|
||||
}
|
||||
/**
|
||||
* 供应商列表
|
||||
*/
|
||||
const listVendorList = ref([]);
|
||||
const getlistVendor = async () => {
|
||||
let res = await listVendor({ pageNum: 1, pageSize: 9999 });
|
||||
listVendorList.value = res.rows;
|
||||
}
|
||||
/**
|
||||
* 格式化商品类别名称
|
||||
* @param row
|
||||
*/
|
||||
const formatCategoryName = (id:any) => {
|
||||
for (let i = 0; i < productCategoryList.value.length; i++) {
|
||||
const element = productCategoryList.value[i];
|
||||
if (element.id == id) {
|
||||
return element.category;
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 格式化 供应商名称
|
||||
* @param id
|
||||
*/
|
||||
const formatVendorName = (id:any) => {
|
||||
for (let i = 0; i < listVendorList.value.length; i++) {
|
||||
const element = listVendorList.value[i];
|
||||
if (element.id == id) {
|
||||
return element.vendorName;
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.handle_btn {
|
||||
|
370
src/views/manage/mkPostcard/index.vue
Normal file
370
src/views/manage/mkPostcard/index.vue
Normal file
@ -0,0 +1,370 @@
|
||||
<template>
|
||||
<div class="p-2">
|
||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter"
|
||||
:leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||
<div v-show="showSearch" class="mb-[10px]" id="search_div">
|
||||
<el-card shadow="hover">
|
||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
||||
<el-form-item label="名称" prop="name">
|
||||
<el-input class="inputWidth" v-model="queryParams.name" placeholder="请输入明信片类别名称" clearable
|
||||
@keyup.enter="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="排序" prop="sortNum">
|
||||
<el-input class="inputWidth" v-model="queryParams.sortNum" placeholder="请输入排序" clearable
|
||||
@keyup.enter="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
||||
<el-button type="primary" plain icon="Plus" @click="handleAdd"
|
||||
v-hasPermi="['manage:mkPostcard:add']">新增</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
</div>
|
||||
</transition>
|
||||
|
||||
<el-table v-loading="loading" border :data="mkPostcardList" :height="autoTableHeight"
|
||||
@selection-change="handleSelectionChange">
|
||||
<el-table-column label="ID" align="center" prop="id" v-if="true" width="150" />
|
||||
<el-table-column label="明信片名称" align="center" prop="name" />
|
||||
<el-table-column label="关联景点" align="center" prop="articleId">
|
||||
<template #default="scope">
|
||||
<span>{{ formatterArticleId(scope.row.articleId)}}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="排序" align="center" prop="sortNum" />
|
||||
<el-table-column label="封面" align="center" prop="">
|
||||
<template #default="scope">
|
||||
<el-image :src="scope.row.imgUrl" :preview-src-list="[scope.row.imgUrl]" :initial-index="0" fit="cover"
|
||||
style="width: 100px; height: 100px" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="明信片" align="center" prop="">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" @click="handlePostcard(scope.row)">查看详情</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 0-未上架 1-已上架 -->
|
||||
<el-table-column label="状态" align="center" prop="status">
|
||||
<template #default="scope">
|
||||
<span>{{ scope.row.status == 1 ? '已上架' : '未上架'}}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="创建者" align="center" prop="createByName" />
|
||||
<el-table-column label="创建时间" align="center" prop="createTime" width="180" />
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" @click="handleStatus(scope.row,'1')" v-if="scope.row.status == 0"
|
||||
v-hasPermi="['manage:mkPostcard:edit']">上架</el-button>
|
||||
<el-button link type="primary" @click="handleStatus(scope.row,'0')" v-if="scope.row.status == 1"
|
||||
v-hasPermi="['manage:mkPostcard:edit']">下架</el-button>
|
||||
<el-tooltip content="修改" placement="top" v-if="scope.row.status == 0">
|
||||
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)"
|
||||
v-hasPermi="['manage:mkPostcard:edit']"></el-button>
|
||||
</el-tooltip>
|
||||
<el-tooltip content="删除" placement="top" v-if="scope.row.status == 0">
|
||||
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)"
|
||||
v-hasPermi="['manage:mkPostcard:remove']"></el-button>
|
||||
</el-tooltip>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<pagination v-show="total > 0" id="table_page" :total="total" v-model:page="queryParams.pageNum"
|
||||
v-model:limit="queryParams.pageSize" @pagination="getList" />
|
||||
<!-- 添加或修改明信片类别对话框 -->
|
||||
<el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
|
||||
<el-form ref="mkPostcardFormRef" :model="form" :rules="rules" label-width="80px">
|
||||
<el-form-item label="名称" prop="name">
|
||||
<el-input v-model="form.name" placeholder="请输入明信片名称" />
|
||||
</el-form-item>
|
||||
<el-form-item label="关联景点" prop="articleId">
|
||||
<el-select v-model="form.articleId" placeholder="请选择关联景点" clearable>
|
||||
<el-option v-for="(item,index) in contentAllList" :key="item.id" :label="item.name"
|
||||
:value="item.id"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="排序" prop="sortNum">
|
||||
<el-input-number v-model="form.sortNum" :min="1" :max="10000" />
|
||||
</el-form-item>
|
||||
<el-form-item label="封面" prop="coverImage">
|
||||
<image-upload v-model="form.coverImage" />
|
||||
</el-form-item>
|
||||
<el-form-item label="明信片" prop="postcardImage">
|
||||
<image-upload v-model="form.postcardImage" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button :loading="buttonLoading" type="primary" @click="submitForm">确 定</el-button>
|
||||
<el-button @click="cancel">取 消</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
<!-- 明显片详情 -->
|
||||
<el-dialog :title="postcardInfo.title" v-model="postcardInfo.visible" width="700px" append-to-body>
|
||||
<el-table v-loading="loading" border :data="postcardInfo.dataList" :height="300">
|
||||
<el-table-column label="明信片" align="center" prop="name">
|
||||
<template #default="scope">
|
||||
<el-image :src="scope.row.pic" style="width: 100px; height: 100px" fit="cover" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="打卡人数" align="center" prop="clockInCount" />
|
||||
<el-table-column label="邮寄人数" align="center" prop="mailingCount" />
|
||||
</el-table>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button @click="cancel">关 闭</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup name="MkPostcard" lang="ts">
|
||||
import { contentAll } from '@/api/manage/scenic';
|
||||
import { listMkPostcard, getMkPostcard, delMkPostcard, addMkPostcard, updateMkPostcard,listMkPostcardDetail } from '@/api/manage/mkPostcard';
|
||||
import { MkPostcardVO, MkPostcardQuery, MkPostcardForm } from '@/api/manage/mkPostcard/types';
|
||||
import { Postcard } from '@element-plus/icons-vue';
|
||||
import { title } from 'process';
|
||||
|
||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||
const autoTableHeight = ref<number>(750);
|
||||
const mkPostcardList = ref<MkPostcardVO[]>([]);
|
||||
const buttonLoading = ref(false);
|
||||
const loading = ref(true);
|
||||
const showSearch = ref(true);
|
||||
const ids = ref<Array<string | number>>([]);
|
||||
const single = ref(true);
|
||||
const multiple = ref(true);
|
||||
const total = ref(0);
|
||||
|
||||
const queryFormRef = ref<ElFormInstance>();
|
||||
const mkPostcardFormRef = ref<ElFormInstance>();
|
||||
|
||||
const dialog = reactive<DialogOption>({
|
||||
visible: false,
|
||||
title: ''
|
||||
});
|
||||
|
||||
const initFormData: MkPostcardForm = {
|
||||
id: undefined,
|
||||
name: undefined,
|
||||
articleId: undefined,
|
||||
status: 0,
|
||||
sortNum: 0,
|
||||
postcardImage: undefined,
|
||||
coverImage: undefined,
|
||||
}
|
||||
const data = reactive<PageData<MkPostcardForm, MkPostcardQuery>>({
|
||||
form: {...initFormData},
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
name: undefined,
|
||||
articleId: undefined,
|
||||
status: undefined,
|
||||
sortNum: undefined,
|
||||
params: {
|
||||
}
|
||||
},
|
||||
rules: {
|
||||
name: [
|
||||
{ required: true, message: "明信片名称不能为空", trigger: "blur" }
|
||||
],
|
||||
articleId: [
|
||||
{ required: true, message: "关联景点不能为空", trigger: "change" }
|
||||
],
|
||||
sortNum: [
|
||||
{ required: true, message: "排序不能为空", trigger: "change" }
|
||||
],
|
||||
coverImage: [
|
||||
{ required: false, message: "封面不能为空", trigger: "blur" }
|
||||
],
|
||||
postcardImage: [
|
||||
{ required: false, message: "明信片不能为空", trigger: "blur" }
|
||||
],
|
||||
}
|
||||
});
|
||||
|
||||
const { queryParams, form, rules } = toRefs(data);
|
||||
|
||||
/** 查询明信片类别列表 */
|
||||
const getList = async () => {
|
||||
loading.value = true;
|
||||
const res = await listMkPostcard(queryParams.value);
|
||||
mkPostcardList.value = res.rows;
|
||||
total.value = res.total;
|
||||
loading.value = false;
|
||||
}
|
||||
/**
|
||||
* 查询景点下拉列表
|
||||
*/
|
||||
const contentAllList= ref([]);
|
||||
const getContentAll = async () => {
|
||||
const res = await contentAll({type:'0'});
|
||||
Object.assign(contentAllList.value, res);
|
||||
}
|
||||
/** 取消按钮 */
|
||||
const cancel = () => {
|
||||
reset();
|
||||
dialog.visible = false;
|
||||
postcardInfo.visible=false;
|
||||
}
|
||||
|
||||
/** 表单重置 */
|
||||
const reset = () => {
|
||||
form.value = {...initFormData};
|
||||
mkPostcardFormRef.value?.resetFields();
|
||||
}
|
||||
|
||||
/** 搜索按钮操作 */
|
||||
const handleQuery = () => {
|
||||
queryParams.value.pageNum = 1;
|
||||
getList();
|
||||
}
|
||||
|
||||
/** 重置按钮操作 */
|
||||
const resetQuery = () => {
|
||||
queryFormRef.value?.resetFields();
|
||||
handleQuery();
|
||||
}
|
||||
|
||||
/** 多选框选中数据 */
|
||||
const handleSelectionChange = (selection: MkPostcardVO[]) => {
|
||||
ids.value = selection.map(item => item.id);
|
||||
single.value = selection.length != 1;
|
||||
multiple.value = !selection.length;
|
||||
}
|
||||
|
||||
/** 新增按钮操作 */
|
||||
const handleAdd = () => {
|
||||
reset();
|
||||
dialog.visible = true;
|
||||
dialog.title = "添加明信片";
|
||||
}
|
||||
|
||||
/** 修改按钮操作 */
|
||||
const handleUpdate = async (row?: MkPostcardVO) => {
|
||||
reset();
|
||||
const _id = row?.id || ids.value[0]
|
||||
const res = await getMkPostcard(_id);
|
||||
Object.assign(form.value, res.data);
|
||||
dialog.visible = true;
|
||||
dialog.title = "修改明信片";
|
||||
}
|
||||
|
||||
/** 提交按钮 */
|
||||
const submitForm = () => {
|
||||
mkPostcardFormRef.value?.validate(async (valid: boolean) => {
|
||||
if (valid) {
|
||||
buttonLoading.value = true;
|
||||
if (form.value.id) {
|
||||
await updateMkPostcard(form.value).finally(() => buttonLoading.value = false);
|
||||
} else {
|
||||
await addMkPostcard(form.value).finally(() => buttonLoading.value = false);
|
||||
}
|
||||
proxy?.$modal.msgSuccess("操作成功");
|
||||
dialog.visible = false;
|
||||
await getList();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/** 删除按钮操作 */
|
||||
const handleDelete = async (row?: MkPostcardVO) => {
|
||||
const _ids = row?.id;
|
||||
await proxy?.$modal.confirm('是否确认删除名称为"' + row.name + '"的明信片?').finally(() => loading.value = false);
|
||||
await delMkPostcard(_ids);
|
||||
proxy?.$modal.msgSuccess("删除成功");
|
||||
await getList();
|
||||
}
|
||||
|
||||
/** 导出按钮操作 */
|
||||
const handleExport = () => {
|
||||
proxy?.download('manage/mkPostcard/export', {
|
||||
...queryParams.value
|
||||
}, `mkPostcard_${new Date().getTime()}.xlsx`)
|
||||
}
|
||||
/**
|
||||
* 明信片 上下架
|
||||
* @param row
|
||||
* @param type
|
||||
*/
|
||||
const handleStatus=async (row:MkPostcardVO,type:string)=>{
|
||||
if (type=='1') {
|
||||
await proxy?.$modal.confirm('是否确认上架名称为"' + row.name + '"的明信片?')
|
||||
}else{
|
||||
await proxy?.$modal.confirm('是否确认下架名称为"' + row.name + '"的明信片?')
|
||||
}
|
||||
row.status=type;
|
||||
loading.value=true;
|
||||
await updateMkPostcard(row).finally(() => loading.value = false);
|
||||
proxy?.$modal.msgSuccess("操作成功");
|
||||
await getList();
|
||||
}
|
||||
/**
|
||||
* 格式化列表景点名称
|
||||
* @param row
|
||||
*/
|
||||
const formatterArticleId = (id: string) => {
|
||||
for (let i = 0; i < contentAllList.value.length; i++) {
|
||||
const element = contentAllList.value[i];
|
||||
if (element.id == id) {
|
||||
return element.name;
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 查看明信片详情
|
||||
* @param row
|
||||
*/
|
||||
const postcardInfo=reactive({
|
||||
visible:false,
|
||||
dataList:[],
|
||||
title:''
|
||||
})
|
||||
const handlePostcard = async (row:MkPostcardVO)=>{
|
||||
postcardInfo.title=row.name+'明信片';
|
||||
postcardInfo.visible=true;
|
||||
let res=await listMkPostcardDetail({pageNum:1,pageSize:1000});
|
||||
|
||||
}
|
||||
onMounted(() => {
|
||||
getList();
|
||||
getContentAll();
|
||||
nextTick(() => {
|
||||
autoTableHeight.value = proxy?.autoTableHeight();
|
||||
});
|
||||
window.onresize = () => {
|
||||
autoTableHeight.value = proxy?.autoTableHeight();
|
||||
};
|
||||
});
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.el-card :deep(.el-card__body) {
|
||||
padding-bottom: 0px !important;
|
||||
}
|
||||
|
||||
#table_page {
|
||||
height: 50px !important;
|
||||
margin-top: 10px !important;
|
||||
padding-bottom: 10px !important;
|
||||
}
|
||||
|
||||
.el-upload {
|
||||
:deep(.el-upload-dragger) {
|
||||
padding: 0;
|
||||
height: 100%;
|
||||
|
||||
i {
|
||||
top: 30%;
|
||||
left: 50%;
|
||||
position: absolute;
|
||||
transform: translateX(-50%);
|
||||
font-size: 45px;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
@ -63,7 +63,8 @@
|
||||
@selection-change="handleSelectionChange">
|
||||
<el-table-column label="创建时间" align="center" prop="createTime" width="120">
|
||||
<template #default="scope">
|
||||
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
|
||||
<!-- <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span> -->
|
||||
<span>{{ scope.row.createTime }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="订单号" align="center" prop="orderNumber" />
|
||||
|
@ -58,7 +58,8 @@
|
||||
<el-table-column label="操作者" align="center" prop="updateByName" />
|
||||
<el-table-column label="操作时间" align="center" prop="updateTime" width="180">
|
||||
<template #default="scope">
|
||||
<span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d}') }}</span>
|
||||
<!-- <span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d}') }}</span> -->
|
||||
<span>{{ scope.row.updateTime }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
@ -291,7 +292,7 @@ const submitForm = () => {
|
||||
/** 删除按钮操作 */
|
||||
const handleDelete = async (row?: ProductVO) => {
|
||||
const _ids = row?.id || ids.value;
|
||||
await proxy?.$modal.confirm('是否确认删除商品信息编号为"' + _ids + '"的数据项?').finally(() => loading.value = false);
|
||||
await proxy?.$modal.confirm('是否确认删除商品名称为"' + row.productName + '"的数据项?').finally(() => loading.value = false);
|
||||
await delProduct(_ids);
|
||||
proxy?.$modal.msgSuccess("删除成功");
|
||||
await getList();
|
||||
|
@ -15,10 +15,10 @@
|
||||
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
||||
<el-button type="primary" plain icon="Plus" @click="handleAdd"
|
||||
v-hasPermi="['manage:productCategory:add']">新增</el-button>
|
||||
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()"
|
||||
<!-- <el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()"
|
||||
v-hasPermi="['manage:productCategory:edit']">修改</el-button>
|
||||
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()"
|
||||
v-hasPermi="['manage:productCategory:remove']">删除</el-button>
|
||||
v-hasPermi="['manage:productCategory:remove']">删除</el-button> -->
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
@ -27,7 +27,7 @@
|
||||
|
||||
<el-table v-loading="loading" :height="autoTableHeight" border :data="productCategoryList"
|
||||
@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="类别名称" align="center" prop="category" />
|
||||
<el-table-column label="类别排序" align="center" prop="sortNum" />
|
||||
<el-table-column label="商品图" align="center" prop="image.imgUrl">
|
||||
@ -50,7 +50,8 @@
|
||||
<el-table-column label="操作者" align="center" prop="updateByName" />
|
||||
<el-table-column label="操作时间" align="center" prop="updateTime" width="180">
|
||||
<template #default="scope">
|
||||
<span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d}') }}</span>
|
||||
<!-- <span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d}') }}</span> -->
|
||||
<span>{{ scope.row.updateTime }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
@ -96,7 +97,8 @@
|
||||
<el-table-column label="用户昵称" align="center" prop="nickName" />
|
||||
<el-table-column label="许愿时间" align="center" prop="updateTime" width="180">
|
||||
<template #default="scope">
|
||||
<span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d}') }}</span>
|
||||
<!-- <span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d}') }}</span> -->
|
||||
<span>{{ scope.row.updateTime }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@ -251,7 +253,7 @@ const submitForm = () => {
|
||||
/** 删除按钮操作 */
|
||||
const handleDelete = async (row?: ProductCategoryVO) => {
|
||||
const _ids = row?.id || ids.value;
|
||||
await proxy?.$modal.confirm('是否确认删除商品类别编号为"' + _ids + '"的数据项?').finally(() => loading.value = false);
|
||||
await proxy?.$modal.confirm('是否确认删除商品类别编号为"' + row.category + '"的数据项?').finally(() => loading.value = false);
|
||||
await delProductCategory(_ids);
|
||||
proxy?.$modal.msgSuccess("删除成功");
|
||||
await getList();
|
||||
|
@ -50,10 +50,10 @@
|
||||
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
||||
<el-button type="primary" plain icon="Plus" @click="handleAdd"
|
||||
v-hasPermi="['system:article:add']">新增</el-button>
|
||||
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()"
|
||||
<!-- <el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()"
|
||||
v-hasPermi="['system:article:edit']">修改</el-button>
|
||||
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()"
|
||||
v-hasPermi="['system:article:remove']">删除</el-button>
|
||||
v-hasPermi="['system:article:remove']">删除</el-button> -->
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
@ -62,7 +62,6 @@
|
||||
|
||||
<el-table :height="autoTableHeight" v-loading="loading" :data="articleList"
|
||||
@selection-change="handleSelectionChange" border>
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<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" />
|
||||
@ -109,17 +108,20 @@
|
||||
<el-table-column label="收藏数量" align="center" prop="collectionCount" />
|
||||
<el-table-column label="相关笔记" align="center" prop="pubNotebookCount">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" @click="handleNote(scope.row)">11{{ scope.row.noteNumber }}</el-button>
|
||||
<el-button link type="primary" v-if="scope.row.status!==3" @click="handleNote(scope.row)">11{{
|
||||
scope.row.noteNumber }}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="笔记评论数" align="center" prop="notebookCommentCount" width="90px">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" @click="handleNote(scope.row)">11{{ scope.row.noteNumber }}</el-button>
|
||||
<el-button link type="primary" v-if="scope.row.status!==3" @click="handleNote(scope.row)">11{{
|
||||
scope.row.noteNumber }}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="笔记点赞数" align="center" prop="notebookAgreeCount" width="90px">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" @click="handleNote(scope.row)">11{{ scope.row.noteNumber }}</el-button>
|
||||
<el-button link type="primary" v-if="scope.row.status!==3" @click="handleNote(scope.row)">11{{
|
||||
scope.row.noteNumber }}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 0-未发布 1-审核中 2-发布 -->
|
||||
@ -833,15 +835,18 @@ const submitForm = async (type: string) => {
|
||||
if (type == 'draft') {
|
||||
// 存草稿,不验证必填项
|
||||
form.value.status = '3'; //草稿状态为3
|
||||
if (!form.value.name) {
|
||||
proxy?.$modal.msgError('请输入名称');
|
||||
return
|
||||
}
|
||||
buttonLoading.value = true;
|
||||
|
||||
if (form.value.id) {
|
||||
await updateArticle(form.value).finally(() => (buttonLoading.value = false));
|
||||
} else {
|
||||
await addArticle(form.value).finally(() => (buttonLoading.value = false));
|
||||
}
|
||||
proxy?.$modal.msgSuccess('操作成功');
|
||||
dialog.visible = false;
|
||||
// dialog.visible = false;
|
||||
await getList();
|
||||
return;
|
||||
}
|
||||
@ -859,6 +864,7 @@ const submitForm = async (type: string) => {
|
||||
// form.value.attribute = 0;
|
||||
// }
|
||||
if (form.value.id) {
|
||||
form.value.status = '0'; //未发布状态为0
|
||||
await updateArticle(form.value).finally(() => (buttonLoading.value = false));
|
||||
} else {
|
||||
await addArticle(form.value).finally(() => (buttonLoading.value = false));
|
||||
|
@ -35,7 +35,8 @@
|
||||
<el-table-column label="更新者" align="center" prop="updateByName" />
|
||||
<el-table-column label="更新时间" align="center" prop="updateTime" width="180">
|
||||
<template #default="scope">
|
||||
<span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d}') }}</span>
|
||||
<!-- <span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d}') }}</span> -->
|
||||
<span>{{ scope.row.updateTime }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
|
@ -1,39 +1,43 @@
|
||||
<!-- 用户等级列表 -->
|
||||
<template>
|
||||
<div class="p-2">
|
||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||
<transition :enter-active-class="proxy?.animate.searchAnimate.enter"
|
||||
:leave-active-class="proxy?.animate.searchAnimate.leave">
|
||||
<div v-show="showSearch" class="mb-[10px]" id="search_div">
|
||||
<el-card shadow="hover">
|
||||
<el-form ref="queryFormRef" :model="queryParams" :inline="true">
|
||||
<el-form-item label="等级名称" prop="levelName">
|
||||
<el-input class="inputWidth" v-model="queryParams.levelName" placeholder="请输入等级名称" clearable @keyup.enter="handleQuery" />
|
||||
<el-input class="inputWidth" v-model="queryParams.levelName" placeholder="请输入等级名称" clearable
|
||||
@keyup.enter="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="积分上限" prop="score">
|
||||
<el-input class="inputWidth" v-model="queryParams.score" placeholder="请输入积分上限" clearable @keyup.enter="handleQuery" />
|
||||
<el-input class="inputWidth" v-model="queryParams.score" placeholder="请输入积分上限" clearable
|
||||
@keyup.enter="handleQuery" />
|
||||
</el-form-item>
|
||||
<el-form-item label="状态" prop="status">
|
||||
<el-select class="inputWidth" v-model="queryParams.status" placeholder="请选择状态" clearable>
|
||||
<el-option v-for="dict in dy_user_level_status" :key="dict.value" :label="dict.label" :value="dict.value" />
|
||||
<el-option v-for="dict in dy_user_level_status" :key="dict.value" :label="dict.label"
|
||||
:value="dict.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
||||
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['manage:userLevel:add']">新增</el-button>
|
||||
<el-button type="primary" plain icon="Plus" @click="handleAdd"
|
||||
v-hasPermi="['manage:userLevel:add']">新增</el-button>
|
||||
|
||||
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()" v-hasPermi="['manage:userLevel:edit']"
|
||||
>修改</el-button
|
||||
>
|
||||
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()" v-hasPermi="['manage:userLevel:remove']"
|
||||
>删除</el-button
|
||||
>
|
||||
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()"
|
||||
v-hasPermi="['manage:userLevel:edit']">修改</el-button>
|
||||
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()"
|
||||
v-hasPermi="['manage:userLevel:remove']">删除</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
</div>
|
||||
</transition>
|
||||
|
||||
<el-table :height="autoTableHeight" v-loading="loading" :data="userLevelList" @selection-change="handleSelectionChange" border>
|
||||
<el-table :height="autoTableHeight" v-loading="loading" :data="userLevelList"
|
||||
@selection-change="handleSelectionChange" border>
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="用户等级" align="center" prop="levelName" />
|
||||
<el-table-column label="等级所达积分" align="center" prop="score" />
|
||||
@ -41,7 +45,8 @@
|
||||
<el-table-column label="创建者" align="center" prop="createBy" />
|
||||
<el-table-column label="创建时间" align="center" prop="createTime" width="180">
|
||||
<template #default="scope">
|
||||
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
|
||||
<!-- <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span> -->
|
||||
<span>{{ scope.row.createTime }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="状态" align="center" prop="status">
|
||||
@ -54,23 +59,19 @@
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<template #default="scope">
|
||||
<el-tooltip content="修改" placement="top">
|
||||
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['manage:userLevel:edit']"></el-button>
|
||||
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)"
|
||||
v-hasPermi="['manage:userLevel:edit']"></el-button>
|
||||
</el-tooltip>
|
||||
<el-tooltip content="删除" placement="top">
|
||||
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['manage:userLevel:remove']"></el-button>
|
||||
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)"
|
||||
v-hasPermi="['manage:userLevel:remove']"></el-button>
|
||||
</el-tooltip>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<pagination
|
||||
id="table_page"
|
||||
v-show="total > 0"
|
||||
:total="total"
|
||||
v-model:page="queryParams.pageNum"
|
||||
v-model:limit="queryParams.pageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
<pagination id="table_page" v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
|
||||
v-model:limit="queryParams.pageSize" @pagination="getList" />
|
||||
<!-- 添加或修改用户等级对话框 -->
|
||||
<el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body>
|
||||
<el-form ref="userLevelFormRef" :model="form" :rules="rules" label-width="80px">
|
||||
@ -85,7 +86,8 @@
|
||||
</el-form-item>
|
||||
<el-form-item label="状态" prop="status">
|
||||
<el-radio-group v-model="form.status">
|
||||
<el-radio v-for="dict in dy_user_level_status" :key="dict.value" :value="parseInt(dict.value)">{{ dict.label }}</el-radio>
|
||||
<el-radio v-for="dict in dy_user_level_status" :key="dict.value"
|
||||
:value="parseInt(dict.value)">{{ dict.label }}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
@ -247,6 +249,7 @@ const handleDelete = async (row?: UserLevelVO) => {
|
||||
.el-card :deep(.el-card__body) {
|
||||
padding-bottom: 0px !important;
|
||||
}
|
||||
|
||||
#table_page {
|
||||
height: 50px !important;
|
||||
margin-top: 10px !important;
|
||||
|
@ -192,7 +192,10 @@ const handleQuery = () => {
|
||||
|
||||
/** 重置按钮操作 */
|
||||
const resetQuery = () => {
|
||||
timeGroup.value = [];
|
||||
queryFormRef.value?.resetFields();
|
||||
queryParams.value.startTime=undefined;
|
||||
queryParams.value.endTime=undefined;
|
||||
handleQuery();
|
||||
}
|
||||
|
||||
|
11
src/views/manage/vendor/index.vue
vendored
11
src/views/manage/vendor/index.vue
vendored
@ -14,10 +14,10 @@
|
||||
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
||||
<el-button type="primary" plain icon="Plus" @click="handleAdd"
|
||||
v-hasPermi="['manage:vendor:add']">新增</el-button>
|
||||
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()"
|
||||
<!-- <el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate()"
|
||||
v-hasPermi="['manage:vendor:edit']">修改</el-button>
|
||||
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete()"
|
||||
v-hasPermi="['manage:vendor:remove']">删除</el-button>
|
||||
v-hasPermi="['manage:vendor:remove']">删除</el-button> -->
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
@ -26,13 +26,14 @@
|
||||
|
||||
<el-table v-loading="loading" :height="autoTableHeight" :data="vendorList"
|
||||
@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="供应商名称" align="center" prop="vendorName" />
|
||||
<el-table-column label="排序" align="center" prop="sortNum" />
|
||||
<el-table-column label="操作人" align="center" prop="updateByName" />
|
||||
<el-table-column label="操作时间" align="center" prop="updateTime" width="180">
|
||||
<template #default="scope">
|
||||
<span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d}') }}</span>
|
||||
<!-- <span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d}') }}</span> -->
|
||||
<span>{{ scope.row.updateTime }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
@ -207,7 +208,7 @@ const submitForm = () => {
|
||||
/** 删除按钮操作 */
|
||||
const handleDelete = async (row?: VendorVO) => {
|
||||
const _ids = row?.id || ids.value;
|
||||
await proxy?.$modal.confirm('是否确认删除供应商编号为"' + _ids + '"的数据项?').finally(() => loading.value = false);
|
||||
await proxy?.$modal.confirm('是否确认删除供应商编号为"' + row.vendorName + '"的数据项?').finally(() => loading.value = false);
|
||||
await delVendor(_ids);
|
||||
proxy?.$modal.msgSuccess("删除成功");
|
||||
await getList();
|
||||
|
Loading…
Reference in New Issue
Block a user