|
@@ -10,22 +10,27 @@
|
|
|
<div class="flex1 ov-hd d-flex j-ed">
|
|
<div class="flex1 ov-hd d-flex j-ed">
|
|
|
<el-form :model="queryParams" ref="queryFormRef" :inline="true" label-width="auto">
|
|
<el-form :model="queryParams" ref="queryFormRef" :inline="true" label-width="auto">
|
|
|
<el-form-item label="套餐名称:" prop="name">
|
|
<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>
|
|
|
<el-form-item label="套餐状态" prop="status">
|
|
<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="0"></el-option>
|
|
|
<el-option label="在售" value="1"></el-option>
|
|
<el-option label="在售" value="1"></el-option>
|
|
|
<el-option label="已下架" value="2"></el-option>
|
|
<el-option label="已下架" value="2"></el-option>
|
|
|
</el-select>
|
|
</el-select>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item label="制定规则" prop="permitType">
|
|
<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-select>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
<el-form-item label="创建人" prop="createByName">
|
|
<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-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>
|
|
@@ -36,13 +41,15 @@
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="flex1 ov-hd pd-16 d-flex flex-cln">
|
|
<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="pd-8"></div>
|
|
|
<div class="flex1 ov-hd">
|
|
<div class="flex1 ov-hd">
|
|
|
<vxe-table :loading="loading" border :data="list" min-height="0" max-height="100%">
|
|
<vxe-table :loading="loading" border :data="list" min-height="0" max-height="100%">
|
|
|
<!-- 序号 -->
|
|
<!-- 序号 -->
|
|
|
<vxe-column type="seq" fixed="left" width="60" title="序号" align="center" />
|
|
<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="100">
|
|
<vxe-column title="适用对象" field="applyType" min-width="100">
|
|
|
<template #default="{ row }">
|
|
<template #default="{ row }">
|
|
|
<view class="d-flex flex-cln">
|
|
<view class="d-flex flex-cln">
|
|
@@ -81,12 +88,13 @@
|
|
|
<template v-if="+row?.status === 0">
|
|
<template v-if="+row?.status === 0">
|
|
|
<el-button @click="putaway(row)" text type="primary">上架</el-button>
|
|
<el-button @click="putaway(row)" text type="primary">上架</el-button>
|
|
|
<span></span>
|
|
<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>
|
|
|
<template v-if="+row?.status === 1">
|
|
<template v-if="+row?.status === 1">
|
|
|
<el-button @click="soldOut(row)" text type="danger">下架</el-button>
|
|
<el-button @click="soldOut(row)" text type="danger">下架</el-button>
|
|
|
<span></span>
|
|
<span></span>
|
|
|
- <el-button text type="primary">分享</el-button>
|
|
|
|
|
|
|
+ <el-button text type="primary" @click="showShareImg(row)">分享</el-button>
|
|
|
</template>
|
|
</template>
|
|
|
<template v-if="+row?.status === 2">
|
|
<template v-if="+row?.status === 2">
|
|
|
<el-button @click="putaway(row)" text type="primary">上架</el-button>
|
|
<el-button @click="putaway(row)" text type="primary">上架</el-button>
|
|
@@ -96,18 +104,29 @@
|
|
|
<span></span>
|
|
<span></span>
|
|
|
<el-button @click="copyItem(row)" text type="primary">复制</el-button>
|
|
<el-button @click="copyItem(row)" text type="primary">复制</el-button>
|
|
|
<span></span>
|
|
<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>
|
|
</template>
|
|
|
</vxe-column>
|
|
</vxe-column>
|
|
|
</vxe-table>
|
|
</vxe-table>
|
|
|
</div>
|
|
</div>
|
|
|
</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>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
+ <el-dialog title="套餐分享" v-model="shareDialog" width="350px">
|
|
|
|
|
+ <div class="d-flex flex-cln">
|
|
|
|
|
+ {{ sharePkgName }}
|
|
|
|
|
+ <el-button type="primary" @click="download">下载</el-button>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <vue-qr ref="qrCode" :text="shareText" v-if="shareText" :size="300"></vue-qr>
|
|
|
|
|
+ </el-dialog>
|
|
|
<rowItems v-if="showRowItems" v-model:show="showRowItems" :packageId="rowId"></rowItems>
|
|
<rowItems v-if="showRowItems" v-model:show="showRowItems" :packageId="rowId"></rowItems>
|
|
|
</template>
|
|
</template>
|
|
|
<script setup name="Menus" lang="ts">
|
|
<script setup name="Menus" lang="ts">
|
|
|
|
|
+import vueQr from 'vue-qr/src/packages/vue-qr.vue'
|
|
|
import { copyTestPackage, testPackageList, testPackageListCount, testPackageSale, testPackageUnSale } from '@/api/cdt/menus';
|
|
import { copyTestPackage, testPackageList, testPackageListCount, testPackageSale, testPackageUnSale } from '@/api/cdt/menus';
|
|
|
import { colNoData } from '@/utils/noData';
|
|
import { colNoData } from '@/utils/noData';
|
|
|
import { searchTabs } from '@/views/models';
|
|
import { searchTabs } from '@/views/models';
|
|
@@ -146,7 +165,9 @@ const resetQuery = () => {
|
|
|
// 获取tabs统计数据
|
|
// 获取tabs统计数据
|
|
|
const tabs = ref<any[]>([]);
|
|
const tabs = ref<any[]>([]);
|
|
|
const getTabsCount = debounce(async () => {
|
|
const getTabsCount = debounce(async () => {
|
|
|
- const res = await testPackageListCount({ ...queryParams.value });
|
|
|
|
|
|
|
+ const params = { ...queryParams.value }
|
|
|
|
|
+ params.publicFlag = ''
|
|
|
|
|
+ const res = await testPackageListCount(params);
|
|
|
if (!res || res.code !== 200) return;
|
|
if (!res || res.code !== 200) return;
|
|
|
// this.tabsList = res.rows;
|
|
// this.tabsList = res.rows;
|
|
|
tabs.value = res.data;
|
|
tabs.value = res.data;
|
|
@@ -205,6 +226,25 @@ const queryRowItems = (row: any) => {
|
|
|
rowId.value = row?.id;
|
|
rowId.value = row?.id;
|
|
|
showRowItems.value = true;
|
|
showRowItems.value = true;
|
|
|
};
|
|
};
|
|
|
|
|
+//二维码分享
|
|
|
|
|
+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}`;
|
|
|
|
|
+ sharePkgName.value = row?.name;
|
|
|
|
|
+ shareDialog.value = true;
|
|
|
|
|
+}
|
|
|
|
|
+const qrCode=ref<any>(null)
|
|
|
|
|
+const download = () => {
|
|
|
|
|
+ const a:any = document.createElement('a')
|
|
|
|
|
+ // 下载的文件名
|
|
|
|
|
+ a.download = `${sharePkgName.value}.png`
|
|
|
|
|
+ // url
|
|
|
|
|
+ a.href = qrCode.value.$el.src
|
|
|
|
|
+ // 触发点击
|
|
|
|
|
+ a.click()
|
|
|
|
|
+}
|
|
|
onMounted(() => {
|
|
onMounted(() => {
|
|
|
getTabsCount();
|
|
getTabsCount();
|
|
|
getList();
|
|
getList();
|