| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219 |
- <script setup lang="ts">
- import { ref } from "vue";
- import { useActivity } from "./utils/hook";
- import { PureTableBar } from "@/components/RePureTableBar";
- import { useRenderIcon } from "@/components/ReIcon/src/hooks";
- import Delete from "~icons/ep/delete";
- import EditPen from "~icons/ep/edit-pen";
- import Refresh from "~icons/ep/refresh";
- import AddFill from "~icons/ri/add-circle-line";
- import VideoPlay from "~icons/ep/video-play";
- import VideoPause from "~icons/ep/video-pause";
- defineOptions({
- name: "MarketingActivity"
- });
- const formRef = ref();
- const tableRef = ref();
- const {
- form,
- loading,
- columns,
- dataList,
- pagination,
- onSearch,
- resetForm,
- handleAdd,
- handleEdit,
- handleViewDetail,
- handleDelete,
- handlePublish,
- handlePause,
- handleResume,
- handleSizeChange,
- handleCurrentChange
- } = useActivity();
- </script>
- <template>
- <div class="main">
- <el-form
- ref="formRef"
- :inline="true"
- :model="form"
- class="search-form bg-bg_color w-full pl-8 pt-[12px] overflow-auto"
- >
- <el-form-item label="活动名称:" prop="name">
- <el-input
- v-model="form.name"
- placeholder="请输入活动名称"
- clearable
- class="w-[180px]!"
- />
- </el-form-item>
- <el-form-item label="活动类型:" prop="type">
- <el-select
- v-model="form.type"
- placeholder="请选择"
- clearable
- class="w-[180px]!"
- >
- <el-option label="折扣活动" :value="1" />
- <el-option label="满减活动" :value="2" />
- <el-option label="赠品活动" :value="3" />
- <el-option label="秒杀活动" :value="4" />
- </el-select>
- </el-form-item>
- <el-form-item label="状态:" prop="status">
- <el-select
- v-model="form.status"
- placeholder="请选择"
- clearable
- class="w-[180px]!"
- >
- <el-option label="草稿" :value="0" />
- <el-option label="进行中" :value="1" />
- <el-option label="已暂停" :value="2" />
- <el-option label="已结束" :value="3" />
- </el-select>
- </el-form-item>
- <el-form-item>
- <el-button
- type="primary"
- :icon="useRenderIcon('ri/search-line')"
- :loading="loading"
- @click="onSearch"
- >
- 搜索
- </el-button>
- <el-button :icon="useRenderIcon(Refresh)" @click="resetForm(formRef)">
- 重置
- </el-button>
- </el-form-item>
- </el-form>
- <PureTableBar
- title="活动管理"
- :columns="columns"
- @refresh="onSearch"
- >
- <template #buttons>
- <el-button
- type="primary"
- :icon="useRenderIcon(AddFill)"
- @click="handleAdd"
- >
- 新增活动
- </el-button>
- </template>
- <template v-slot="{ size, dynamicColumns }">
- <pure-table
- ref="tableRef"
- align-whole="center"
- showOverflowTooltip
- table-layout="auto"
- :loading="loading"
- :size="size"
- adaptive
- :adaptiveConfig="{ offsetBottom: 108 }"
- :data="dataList"
- :columns="dynamicColumns"
- :pagination="{ ...pagination, size }"
- :header-cell-style="{
- background: 'var(--el-fill-color-light)',
- color: 'var(--el-text-color-primary)'
- }"
- @page-size-change="handleSizeChange"
- @page-current-change="handleCurrentChange"
- >
- <template #operation="{ row }">
- <el-button
- class="reset-margin"
- link
- type="primary"
- :size="size"
- :icon="useRenderIcon('ri:eye-line')"
- @click="handleViewDetail(row)"
- >
- 查看
- </el-button>
- <el-button
- v-if="row.status === 0"
- class="reset-margin"
- link
- type="success"
- :size="size"
- :icon="useRenderIcon(VideoPlay)"
- @click="handlePublish(row)"
- >
- 发布
- </el-button>
- <el-button
- v-if="row.status === 1"
- class="reset-margin"
- link
- type="warning"
- :size="size"
- :icon="useRenderIcon(VideoPause)"
- @click="handlePause(row)"
- >
- 暂停
- </el-button>
- <el-button
- v-if="row.status === 2"
- class="reset-margin"
- link
- type="success"
- :size="size"
- :icon="useRenderIcon(VideoPlay)"
- @click="handleResume(row)"
- >
- 恢复
- </el-button>
- <el-button
- class="reset-margin"
- link
- type="primary"
- :size="size"
- :icon="useRenderIcon(EditPen)"
- @click="handleEdit(row)"
- >
- 编辑
- </el-button>
- <el-popconfirm
- title="是否确认删除?"
- @confirm="handleDelete(row)"
- >
- <template #reference>
- <el-button
- class="reset-margin"
- link
- type="danger"
- :size="size"
- :icon="useRenderIcon(Delete)"
- >
- 删除
- </el-button>
- </template>
- </el-popconfirm>
- </template>
- </pure-table>
- </template>
- </PureTableBar>
- </div>
- </template>
- <style lang="scss" scoped>
- .main-content {
- margin: 24px 24px 0 !important;
- }
- .search-form {
- :deep(.el-form-item) {
- margin-bottom: 12px;
- }
- }
- </style>
|