huangxw há 10 meses atrás
pai
commit
61fc9f56ca

+ 15 - 0
src/api/cdt/orders/index.ts

@@ -0,0 +1,15 @@
+import request from '@/utils/request';
+import { AxiosPromise } from 'axios';
+
+/**
+ * 查询订单列表
+ * @param query
+ * @returns {*}
+ */
+export const testOrderList = (query?: any): any => {
+    return request({
+        url: '/dgtmedicine/testOrder/list',
+        method: 'get',
+        params: query
+    });
+};

+ 0 - 3
src/views/cdt/discount/index.vue

@@ -28,9 +28,6 @@ import NP from 'number-precision';
 const queryParams = ref<any>({
     pageNum: 1,
     pageSize: 10,
-    name: '',
-    itemTypeId: '',
-    packageId: ''
 });
 const loading = ref(false);
 const total = ref(0);

+ 11 - 6
src/views/cdt/menus/index.vue

@@ -113,6 +113,7 @@ import { colNoData } from '@/utils/noData';
 import { searchTabs } from '@/views/models';
 import NP from 'number-precision';
 import { rowItems } from '../models';
+import { debounce } from 'lodash';
 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();
@@ -126,14 +127,14 @@ const showRowItems = ref(false);
 const loading = ref(false);
 const total = ref(0);
 const list = ref<any>([]);
-const getList = async () => {
+const getList = debounce(async () => {
     loading.value = true;
     const res = await testPackageList(queryParams.value);
     if (!res || res.code !== 200) return;
     list.value = res.rows;
     total.value = res.total;
     loading.value = false;
-};
+}, 500);
 const handleQuery = () => {
     queryParams.value.pageNum = 1;
     getList();
@@ -144,12 +145,12 @@ const resetQuery = () => {
 };
 // 获取tabs统计数据
 const tabs = ref<any[]>([]);
-const getTabsCount = async () => {
+const getTabsCount = debounce(async () => {
     const res = await testPackageListCount({ ...queryParams.value });
     if (!res || res.code !== 200) return;
     // this.tabsList = res.rows;
     tabs.value = res.data;
-};
+}, 500);
 // 上架套餐
 const putaway = async (row: any) => {
     console.log(row);
@@ -158,7 +159,7 @@ const putaway = async (row: any) => {
         showCancelButton: true,
         confirmButtonText: '确认上架',
         cancelButtonText: '取消',
-        message: h('p', null, [h('div', null, `是否确认上架:${ row?.name }`), h('div', { style: 'color: #2A6D52;' }, '上架后,即可分享并在小程序上显示该套餐!')]),
+        message: h('p', null, [h('div', null, `是否确认上架:${row?.name}`), h('div', { style: 'color: #2A6D52;' }, '上架后,即可分享并在小程序上显示该套餐!')]),
         callback: async (action: string) => {
             if (action === 'confirm') {
                 proxy.$modal.loading('上架中...');
@@ -178,7 +179,7 @@ const soldOut = async (row: any) => {
         showCancelButton: true,
         confirmButtonText: '确认下架',
         cancelButtonText: '取消',
-        message: h('p', null, [h('div', null, `是否确认下架:${ row?.name }`), h('div', { style: 'color: #F56C6C;' }, '下架后,该套餐将不再小程序上显示,已购买企业不受影响!')]),
+        message: h('p', null, [h('div', null, `是否确认下架:${row?.name}`), h('div', { style: 'color: #F56C6C;' }, '下架后,该套餐将不再小程序上显示,已购买企业不受影响!')]),
         callback: async (action: string) => {
             if (action === 'confirm') {
                 proxy.$modal.loading('下架中...');
@@ -208,4 +209,8 @@ onMounted(() => {
     getTabsCount();
     getList();
 });
+onActivated(() => {
+    getTabsCount();
+    getList();
+});
 </script>

+ 89 - 0
src/views/cdt/orders/index.vue

@@ -0,0 +1,89 @@
+<template>
+    <div class="p-3">
+        <div class="bg-fff flex1 ov-hd d-flex flex-cln">
+            <div class="pd-16 border-bottom">
+                <div class="f-s-20 c-333 f-w-7 mb-12">订单管理</div>
+                <searchTabs v-model="queryParams.publicFlag" @change="handleQuery" :list="test_order_status" key-label="name" key-value="type" key-count="num"></searchTabs>
+            </div>
+            <div class="flex1 ov-hd pd-16 d-flex flex-cln">
+                <el-form :model="queryParams" ref="queryFormRef" :inline="true" label-width="auto">
+                    <el-form-item label="订单号:" prop="orderNo">
+                        <el-input v-model="queryParams.orderNo" placeholder="搜订单号" clearable style="width: 180px" @keyup.enter="handleQuery" />
+                    </el-form-item>
+                    <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>
+                        </div>
+                    </el-form-item>
+                    <el-form-item label="套餐名称:" prop="keyword">
+                        <el-input v-model="queryParams.keyword" placeholder="请输入套餐名称关键字" clearable style="width: 160px" @keyup.enter="handleQuery" />
+                    </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 vip_level" :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-form-item>
+                    <el-form-item>
+                        <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
+                        <el-button icon="Refresh" @click="resetQuery">重置</el-button>
+                    </el-form-item>
+                </el-form>
+                <div class="flex1 ov-hd">
+                    <vxe-table :loading="loading" border :data="list" min-height="0" max-height="100%">
+                        <!-- 序号 -->
+                        <vxe-column type="seq" width="60" title="序号" align="center" />
+                        <vxe-column title="订单号" field="orderNo" min-width="100" :formatter="colNoData" />
+                        <vxe-column title="套餐名称" field="packageName" min-width="100" :formatter="colNoData" />
+                        <vxe-column title="买家" field="packageName" min-width="100" :formatter="colNoData" />
+                        <vxe-column title="会员等级" field="packageName" min-width="100" :formatter="colNoData" />
+                        <vxe-column title="检测项目" field="packageName" min-width="100" :formatter="colNoData" />
+                        <vxe-column title="检测周期" field="packageName" min-width="100" :formatter="colNoData" />
+                        <vxe-column title="订单周期" field="packageName" min-width="100" :formatter="colNoData" />
+                        <vxe-column title="实付款" field="packageName" min-width="100" :formatter="colNoData" />
+                    </vxe-table>
+                </div>
+            </div>
+            <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" @pagination="getList" />
+            <div class="pd-5"></div>
+        </div>
+    </div>
+</template>
+<script setup name="orders" lang="ts">
+import { testOrderList } from '@/api/cdt/orders';
+import { colNoData } from '@/utils/noData';
+import { DateRange, searchTabs } from '@/views/models';
+import NP from 'number-precision';
+const { proxy } = getCurrentInstance() as ComponentInternalInstance;
+const { dm_package_type, dm_permit_type, vip_level, test_order_status } = toRefs<any>(proxy?.useDict('dm_package_type', 'dm_permit_type', 'vip_level', 'test_order_status'));
+const queryParams = ref<any>({
+    pageNum: 1,
+    pageSize: 10,
+    dateRange: []
+});
+const queryFormRef = ref<any>();
+const loading = ref(false);
+const total = ref(0);
+const list = ref<any>([]);
+const getList = async () => {
+    loading.value = true;
+    const res = await testOrderList(queryParams.value);
+    if (!res || res.code !== 200) return;
+    list.value = res.rows;
+    total.value = res.total;
+    loading.value = false;
+};
+const handleQuery = () => {
+    queryParams.value.pageNum = 1;
+    getList();
+};
+const resetQuery = () => {
+    queryFormRef.value?.resetFields();
+    handleQuery();
+};
+onMounted(() => {
+    getList();
+});
+</script>

+ 20 - 30
uno.config.ts

@@ -1,33 +1,23 @@
-import {
-  defineConfig,
-  presetAttributify,
-  presetIcons,
-  presetTypography,
-  presetUno,
-  presetWebFonts,
-  transformerDirectives,
-  transformerVariantGroup
-} from 'unocss';
+import { defineConfig, presetAttributify, presetIcons, presetTypography, presetUno, presetWebFonts, transformerDirectives, transformerVariantGroup } from 'unocss';
 
 export default defineConfig({
-  shortcuts: {
-    'panel-title':
-      'pb-[5px] font-sans leading-[1.1] font-medium text-base text-[#6379bb] border-b border-b-solid border-[var(--el-border-color-light)] mb-5 mt-0'
-  },
-  theme: {
-    colors: {
-      primary: 'var(--el-color-primary)',
-      primary_dark: 'var(--el-color-primary-light-5)'
-    }
-  },
-  presets: [
-    presetUno(),
-    presetAttributify(),
-    presetIcons(),
-    presetTypography(),
-    presetWebFonts({
-      fonts: {}
-    })
-  ],
-  transformers: [transformerDirectives(), transformerVariantGroup()]
+    shortcuts: {
+        'panel-title': 'pb-[5px] font-sans leading-[1.1] font-medium text-base text-[#6379bb] border-b border-b-solid border-[var(--el-border-color-light)] mb-5 mt-0'
+    },
+    theme: {
+        colors: {
+            primary: 'var(--el-color-primary)',
+            primary_dark: 'var(--el-color-primary-light-5)'
+        }
+    },
+    presets: [
+        presetUno(),
+        presetAttributify(),
+        presetIcons(),
+        presetTypography(),
+        presetWebFonts({
+            fonts: {}
+        })
+    ],
+    transformers: [transformerDirectives(), transformerVariantGroup()]
 });

+ 2 - 2
vite.config.ts

@@ -26,8 +26,8 @@ export default defineConfig(({ mode, command }: ConfigEnv): UserConfig => {
             proxy: {
                 [env.VITE_APP_BASE_API]: {
                     // target: 'http://dm.yujin.shuziyunyao.com/api',
-                    // target: 'http://dm.yujin.shuziyunyao.com/api',
-                    target: 'http://192.168.1.68:8080',
+                    target: 'http://dm.yujin.shuziyunyao.com/api',
+                    // target: 'http://192.168.1.68:8080',
                     changeOrigin: true,
                     ws: true,
                     rewrite: (path) => path.replace(new RegExp('^' + env.VITE_APP_BASE_API), '')