|
|
@@ -10,22 +10,27 @@
|
|
|
<div class="flex1 ov-hd d-flex j-ed">
|
|
|
<el-form :model="queryParams" ref="queryFormRef" :inline="true" label-width="auto">
|
|
|
<el-form-item label="套餐名称:" prop="name">
|
|
|
- <el-input v-model="queryParams.name" placeholder="请输入套餐名称关键字" clearable style="width: 180px" @keyup.enter="handleQuery" />
|
|
|
+ <el-input v-model="queryParams.name" placeholder="请输入套餐名称关键字" clearable style="width: 180px"
|
|
|
+ @keyup.enter="handleQuery" />
|
|
|
</el-form-item>
|
|
|
<el-form-item label="套餐状态" prop="status">
|
|
|
- <el-select style="width: 160px" v-model="queryParams.status" clearable placeholder="请选择套餐状态" @change="handleQuery">
|
|
|
+ <el-select style="width: 160px" v-model="queryParams.status" clearable placeholder="请选择套餐状态"
|
|
|
+ @change="handleQuery">
|
|
|
<el-option label="未上架" value="0"></el-option>
|
|
|
<el-option label="在售" value="1"></el-option>
|
|
|
<el-option label="已下架" value="2"></el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="制定规则" prop="permitType">
|
|
|
- <el-select style="width: 160px" v-model="queryParams.permitType" clearable placeholder="请选择制定规则" @change="handleQuery">
|
|
|
- <el-option v-for="item in dm_permit_type" :key="item.value" :label="item.label" :value="item.value"></el-option>
|
|
|
+ <el-select style="width: 160px" v-model="queryParams.permitType" clearable
|
|
|
+ placeholder="请选择制定规则" @change="handleQuery">
|
|
|
+ <el-option v-for="item in dm_permit_type" :key="item.value" :label="item.label"
|
|
|
+ :value="item.value"></el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="创建人" prop="createByName">
|
|
|
- <el-input v-model="queryParams.createByName" placeholder="请输入创建人关键字" clearable style="width: 160px" @keyup.enter="handleQuery" />
|
|
|
+ <el-input v-model="queryParams.createByName" placeholder="请输入创建人关键字" clearable
|
|
|
+ style="width: 160px" @keyup.enter="handleQuery" />
|
|
|
</el-form-item>
|
|
|
<el-form-item>
|
|
|
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
|
|
@@ -36,13 +41,16 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="flex1 ov-hd pd-16 d-flex flex-cln">
|
|
|
- <searchTabs v-model="queryParams.publicFlag" @change="handleQuery" :list="tabs" key-label="name" key-value="type" key-count="num"></searchTabs>
|
|
|
+ <searchTabs v-model="queryParams.publicFlag" @change="handleQuery" :list="tabs" key-label="name"
|
|
|
+ key-value="type" key-count="num"></searchTabs>
|
|
|
<div class="pd-8"></div>
|
|
|
<div class="flex1 ov-hd">
|
|
|
- <vxe-table :loading="loading" border :data="list" min-height="0" max-height="100%" :row-class-name="rowClassName">
|
|
|
+ <vxe-table :loading="loading" border :data="list" min-height="0" max-height="100%"
|
|
|
+ :row-class-name="rowClassName">
|
|
|
<!-- 序号 -->
|
|
|
<vxe-column type="seq" fixed="left" width="60" title="序号" align="center" />
|
|
|
- <vxe-column title="套餐名称" fixed="left" align="center" field="name" min-width="100" :formatter="colNoData" />
|
|
|
+ <vxe-column title="套餐名称" fixed="left" align="center" field="name" min-width="100"
|
|
|
+ :formatter="colNoData" />
|
|
|
<vxe-column title="适用对象" field="applyType" min-width="210">
|
|
|
<template #default="{ row }">
|
|
|
<view class="d-flex flex-cln" v-if="row?.permitType == '1'">
|
|
|
@@ -55,8 +63,10 @@
|
|
|
</view>
|
|
|
<view class="d-flex flex-cln" v-if="row?.permitType == '2'">
|
|
|
<view>
|
|
|
- {{ row?.permitCpyNames?.join(',') }}-{{ NP.times(row?.priceDetail?.length && row?.priceDetail[0]?.memberDiscount || 0, 10)}}折
|
|
|
- <span class="c-333 f-w-5">({{ row?.priceDetail?.length&&row?.priceDetail[0]?.price }})</span>
|
|
|
+ {{ row?.permitCpyNames?.join(',') }}-{{ NP.times(row?.priceDetail?.length &&
|
|
|
+ row?.priceDetail[0]?.memberDiscount || 0, 10) }}折
|
|
|
+ <span class="c-333 f-w-5">({{ row?.priceDetail?.length && row?.priceDetail[0]?.price
|
|
|
+ }})</span>
|
|
|
</view>
|
|
|
</view>
|
|
|
</template>
|
|
|
@@ -86,7 +96,8 @@
|
|
|
</vxe-column>
|
|
|
<vxe-column title="剩余时间" field="restDay" width="80">
|
|
|
<template #default="{ row }">
|
|
|
- <span v-if="new Date(row?.validUntil) > new Date()">{{ Math.floor((new Date(row?.validUntil).getTime() - new Date().getTime())/(3600*24*1000))+1 }}天</span>
|
|
|
+ <span v-if="new Date(row?.validUntil) > new Date()">{{ Math.floor((new
|
|
|
+ Date(row?.validUntil).getTime() - new Date().getTime()) / (3600 * 24 * 1000)) + 1 }}天</span>
|
|
|
<span v-else>已过期</span>
|
|
|
</template>
|
|
|
</vxe-column>
|
|
|
@@ -104,7 +115,8 @@
|
|
|
<template v-if="+row?.status === 0">
|
|
|
<el-button @click="putaway(row)" text type="primary">上架</el-button>
|
|
|
<span></span>
|
|
|
- <el-button @click="router.push({ path: 'menus-form', query: { id: row?.id } })" text type="primary">编辑</el-button>
|
|
|
+ <el-button @click="router.push({ path: 'menus-form', query: { id: row?.id } })" text
|
|
|
+ type="primary">编辑</el-button>
|
|
|
</template>
|
|
|
<template v-if="+row?.status === 1">
|
|
|
<el-button @click="soldOut(row)" text type="danger">下架</el-button>
|
|
|
@@ -119,13 +131,15 @@
|
|
|
<span></span>
|
|
|
<el-button @click="copyItem(row)" text type="primary">复制</el-button>
|
|
|
<span></span>
|
|
|
- <el-button @click="router.push({ path: 'menus-detail', query: { id: row?.id } })" text type="primary">详情</el-button>
|
|
|
+ <el-button @click="router.push({ path: 'menus-detail', query: { id: row?.id } })" text
|
|
|
+ type="primary">详情</el-button>
|
|
|
</template>
|
|
|
</vxe-column>
|
|
|
</vxe-table>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <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" />
|
|
|
</div>
|
|
|
</div>
|
|
|
<el-dialog title="套餐分享" v-model="shareDialog" width="350px">
|
|
|
@@ -148,6 +162,7 @@ import NP from 'number-precision';
|
|
|
import { rowItems } from '../models';
|
|
|
import { debounce } from 'lodash';
|
|
|
import html2canvas from 'html2canvas';
|
|
|
+const base_url = import.meta.env.PACKAGE_SHARE_URL;
|
|
|
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
|
|
const { dm_package_type, dm_permit_type, vip_level } = toRefs<any>(proxy?.useDict('dm_package_type', 'dm_permit_type', 'vip_level'));
|
|
|
const router = useRouter();
|
|
|
@@ -246,7 +261,7 @@ const shareText = ref('');
|
|
|
const sharePkgName = ref('');
|
|
|
const shareDialog = ref(false);
|
|
|
const showShareImg = (row) => {
|
|
|
- shareText.value = `http://dm.share.yujin.shuziyunyao.com/package?id=${row?.id}`;
|
|
|
+ shareText.value = `${base_url}?id=${row?.id}`;
|
|
|
sharePkgName.value = row?.name;
|
|
|
shareDialog.value = true;
|
|
|
}
|
|
|
@@ -270,9 +285,9 @@ const downloadQrCode = () => {
|
|
|
})
|
|
|
}
|
|
|
const rowClassName = ({ row }) => {
|
|
|
- if (new Date(row?.validUntil) <= new Date()) {
|
|
|
- return 'row-expired';
|
|
|
- }
|
|
|
+ if (new Date(row?.validUntil) <= new Date()) {
|
|
|
+ return 'row-expired';
|
|
|
+ }
|
|
|
}
|
|
|
onMounted(() => {
|
|
|
getTabsCount();
|