Răsfoiți Sursa

更新套餐管理功能,修改复制套餐请求方法为GET,新增删除套餐功能,并在相关页面添加删除按钮和确认逻辑

xiaoyelj 9 luni în urmă
părinte
comite
9468fbd318

+ 12 - 1
src/api/cdt/menus/index.ts

@@ -92,7 +92,7 @@ export const testPackageUnSale = (id?: string): any => {
 export const copyTestPackage = (id?: string): any => {
     return request({
         url: `/dgtmedicine/testPackage/copy/${id}`,
-        method: 'post'
+        method: 'get'
     });
 };
 /**
@@ -129,3 +129,14 @@ export const getEnterpriseDetail = (id?: string): any => {
         method: 'get'
     });
 };
+/**
+ * 删除套餐
+ * @param id
+ * @returns {*}
+ */
+export const deleteTestPackage = (id?: string): any => {
+    return request({
+        url: `/dgtmedicine/testPackage/remove/${id}`,
+        method: 'get'
+    });
+};

+ 20 - 4
src/views/cdt/menus/index.vue

@@ -19,6 +19,7 @@
                                     <el-option label="未上架" value="0"></el-option>
                                     <el-option label="在售" value="1"></el-option>
                                     <el-option label="已下架" value="2"></el-option>
+                                    <el-option label="未上架/在售" value="10"></el-option>
                                 </el-select>
                             </el-form-item>
                             <el-form-item label="制定规则" prop="permitType">
@@ -97,7 +98,8 @@
                         <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>
+                                    Date(row?.validUntil).getTime() - new Date().getTime()) / (3600 * 24 * 1000)) + 1
+                                }}天</span>
                                 <span v-else>已过期</span>
                             </template>
                         </vxe-column>
@@ -117,6 +119,7 @@
                                     <span></span>
                                     <el-button @click="router.push({ path: 'menus-form', query: { id: row?.id } })" text
                                         type="primary">编辑</el-button>
+                                    <el-button @click="delItem(row)" v-ifv-if text type="primary">删除</el-button>
                                 </template>
                                 <template v-if="+row?.status === 1">
                                     <el-button @click="soldOut(row)" text type="danger">下架</el-button>
@@ -130,6 +133,7 @@
                                 </template>
                                 <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>
@@ -155,7 +159,7 @@
 </template>
 <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, deleteTestPackage } from '@/api/cdt/menus';
 import { colNoData } from '@/utils/noData';
 import { searchTabs } from '@/views/models';
 import NP from 'number-precision';
@@ -169,7 +173,8 @@ const router = useRouter();
 const queryParams = ref<any>({
     pageNum: 1,
     pageSize: 10,
-    publicFlag: '1'
+    publicFlag: '1',
+    status: '10',
 });
 const queryFormRef = ref<any>();
 const showRowItems = ref(false);
@@ -218,6 +223,7 @@ const putaway = async (row: any) => {
                 if (!res || res.code !== 200) return;
                 proxy.$modal.msgSuccess('上架成功!');
                 getList();
+                getTabsCount();
             }
         }
     });
@@ -238,18 +244,20 @@ const soldOut = async (row: any) => {
                 if (!res || res.code !== 200) return;
                 proxy.$modal.msgSuccess('下架成功!');
                 getList();
+                getTabsCount();
             }
         }
     });
 };
 // 复制套餐
 const copyItem = async (row: any) => {
-    console.log(row);
+    await proxy.$modal.confirm('是否确认复制该套餐?')
     proxy.$modal.loading('复制中...');
     const res = await copyTestPackage(row?.id).finally(() => proxy.$modal.closeLoading());
     if (!res || res.code !== 200) return;
     proxy.$modal.msgSuccess('复制成功!');
     getList();
+    getTabsCount();
 };
 const rowId = ref('');
 const queryRowItems = (row: any) => {
@@ -289,6 +297,14 @@ const rowClassName = ({ row }) => {
         return 'row-expired';
     }
 }
+const delItem = async (row: any) => {
+    await proxy.$modal.confirm('是否确认删除该套餐?')
+    proxy.$modal.loading('删除中...');
+    await deleteTestPackage(row?.id).finally(() => proxy.$modal.closeLoading());
+    proxy.$modal.msgSuccess('删除成功!');
+    getList();
+    getTabsCount();
+};
 onMounted(() => {
     getTabsCount();
     getList();

+ 30 - 17
src/views/dgtmedicine/news/medicinenews/noticeIndex.vue

@@ -2,24 +2,28 @@
     <div class="p-3">
         <div class="bg-fff flex1 ov-hd d-flex flex-cln" v-show="showSearch">
             <div class="pd-16 border-bottom">
-                <div class="f-s-20 c-333 f-w-7 mb-10">公告发布</div>
+                <div class="f-s-20 c-333 f-w-7 mb-10">资讯发布</div>
                 <div class="d-flex">
                     <div class="mr-40">
-                        <el-button @click="router.push({ path: 'noticeAdd' })" type="primary">新增公告</el-button>
+                        <el-button @click="router.push({ path: 'noticeAdd' })" type="primary">新增资讯</el-button>
                     </div>
                     <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="newsTitle">
-                                <el-input v-model="queryParams.newsTitle" placeholder="请输入标题" clearable style="width: 180px" @keyup.enter="handleQuery" />
+                                <el-input v-model="queryParams.newsTitle" placeholder="请输入标题" clearable style="width: 180px"
+                                    @keyup.enter="handleQuery" />
                             </el-form-item>
-                            <el-form-item label="发布时间" prop="dateRange">
+                            <el-form-item label="创建时间" prop="dateRange">
                                 <div class="d-flex" style="width: 180px">
-                                    <DateRange v-model="queryParams.dateRange" v-model:start-date="queryParams.startDate" v-model:end-date="queryParams.endDate"></DateRange>
+                                    <DateRange v-model="queryParams.dateRange" v-model:start-date="queryParams.startDate"
+                                        v-model:end-date="queryParams.endDate"></DateRange>
                                 </div>
                             </el-form-item>
                             <el-form-item label="状态" prop="newsStatus">
-                                <el-select style="width: 140px" v-model="queryParams.newsStatus" clearable placeholder="请选择状态">
-                                    <el-option v-for="item in news_status" :key="item.value" :label="item.label" :value="item.value" />
+                                <el-select style="width: 140px" v-model="queryParams.newsStatus" clearable
+                                    placeholder="请选择状态">
+                                    <el-option v-for="item in news_status" :key="item.value" :label="item.label"
+                                        :value="item.value" />
                                 </el-select>
                             </el-form-item>
                             <el-form-item>
@@ -32,15 +36,20 @@
             </div>
 
             <div class="d-flex flex1 ov-hd flex-cln pd-16">
-                <div class="pd-8"></div>
+                <div class="d-flex j-sb mb-16">
+                    <div>
+                        <searchTabs v-model="queryParams.newsType" @change="handleQuery" :list="new_type" key-label="label"
+                        key-value="value" :isNum="false"></searchTabs>
+                    </div>
+                </div>
                 <div class="flex1 ov-hd">
                     <vxe-table :loading="loading" border :data="dataList" min-height="0" max-height="100%">
                         <vxe-column title="序号" align="center" type="seq" width="60" />
-                        <vxe-column title="公告标题" align="center" field="newsTitle" :formatter="colNoData" width="400" />
+                        <vxe-column title="资讯标题" align="center" field="newsTitle" :formatter="colNoData" width="400" />
                         <vxe-column title="发布时间" align="center" field="publishTime" :formatter="colNoData" />
                         <vxe-column title="来源" align="center" field="newsOrigin" :formatter="colNoData" />
-                        <!-- <vxe-column title="浏览量" align="center" field="publishTime" :formatter="colNoData" /> -->
-                         <vxe-column title="类型" align="center" field="newsType">
+                        <vxe-column title="浏览量" align="center" field="viewCount" />
+                        <vxe-column title="类型" align="center" field="newsType">
                             <template #default="{ row }">
                                 <dict-tag :options="new_type" :value="row.newsType" />
                             </template>
@@ -54,7 +63,8 @@
                         </vxe-column>
                         <vxe-column title="操作" width="250" align="center" fixed="right">
                             <template #default="{ row }">
-                                <el-button type="text" size="small" @click="row.newsStatus === '1' ? unpublishNews(row) : publishNews(row)">
+                                <el-button type="text" size="small"
+                                    @click="row.newsStatus === '1' ? unpublishNews(row) : publishNews(row)">
                                     {{ row.newsStatus === '1' ? '下架' : '上架' }}
                                 </el-button>
                                 <el-button type="text" size="small" @click="editNews(row)">编辑</el-button>
@@ -64,7 +74,8 @@
                         </vxe-column>
                     </vxe-table>
                 </div>
-                <pagination :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
+                <pagination :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize"
+                    @pagination="getList" />
             </div>
         </div>
     </div>
@@ -74,9 +85,10 @@
 import { colNoData } from '@/utils/noData';
 import { publishNews as publishNewsApi, unpublishNews as unpublishNewsApi, removeNews, fetchNewsList } from '@/api/dgtmedicine/news';
 import { DateRange } from '@/views/models/index';
+import { searchTabs } from '@/views/models';
 const router = useRouter();
 const { proxy } = getCurrentInstance() as ComponentInternalInstance;
-const { news_status,new_type } = toRefs<any>(proxy?.useDict('news_status','new_type'));
+const { news_status, new_type } = toRefs<any>(proxy?.useDict('news_status', 'new_type'));
 const loading = ref(true);
 const showSearch = ref(true);
 const total = ref(0);
@@ -92,7 +104,8 @@ const data = reactive<any>({
         pageSize: 10,
         type: '1',
         newsTitle: '',
-        newsStatus: ''
+        newsStatus: '',
+        newsType:'10'
     },
     rules: {}
 });
@@ -122,7 +135,7 @@ const resetQuery = () => {
 
 /** 编辑新闻 */
 const editNews = (row) => {
-    router.push({ path: `noticeAdd`, query: { id: row.id ,title:'新增公告'} });
+    router.push({ path: `noticeAdd`, query: { id: row.id, title: '新增资讯' } });
 };
 
 /** 删除新闻 */
@@ -142,7 +155,7 @@ const deleteNews = async (row) => {
 
 /** 查看新闻详情 */
 const viewNewsDetail = (row) => {
-    router.push({ path: `noticeAdd`, query: { id: row.id, disable: '1' ,title:'公告详情'} });
+    router.push({ path: `noticeAdd`, query: { id: row.id, disable: '1', title: '资讯详情' } });
 };
 /** 上架新闻 */
 const publishNews = async (row) => {