瀏覽代碼

!240 完善前端 mall-order 模块相关问题
Merge pull request !240 from puhui999/dev-to-dev

芋道源码 1 年之前
父節點
當前提交
ef15261926

+ 2 - 2
src/api/mall/product/spu.ts

@@ -20,8 +20,8 @@ export interface Sku {
   stock?: number // 库存
   weight?: number // 商品重量,单位:kg 千克
   volume?: number // 商品体积,单位:m^3 平米
-  subCommissionFirstPrice?: number | string // 一级分销的佣金
-  subCommissionSecondPrice?: number | string // 二级分销的佣金
+  firstBrokerageRecord?: number | string // 一级分销的佣金
+  secondBrokerageRecord?: number | string // 二级分销的佣金
   salesCount?: number // 商品销量
 }
 

+ 2 - 3
src/api/mall/trade/order/index.ts

@@ -51,11 +51,10 @@ export interface OrderVO {
     avatar?: string
   }
   // 订单操作日志
-  logs?: logs[]
+  logs?: OrderLogRespVO[]
 }
 
-// TODO @puhui999:OrderLogRespVO 会不会更好哈。
-export interface logs {
+export interface OrderLogRespVO {
   content?: string
   createTime?: Date
   userType?: number

+ 0 - 5
src/config/axios/service.ts

@@ -191,11 +191,6 @@ service.interceptors.response.use(
       }
       return Promise.reject('error')
     } else {
-      // TODO @puhui999:这个先不用支持哈;
-      // 前端处理 data 为 null 的情况,进行提示
-      if (data.msg !== '') {
-        ElNotification.error({ title: msg })
-      }
       return data
     }
   },

+ 4 - 7
src/views/Login/components/LoginForm.vue

@@ -230,6 +230,7 @@ const getCookie = () => {
     }
   }
 }
+const loading = ref() // ElLoading.service 返回的实例
 // 登录
 const handleLogin = async (params) => {
   loginLoading.value = true
@@ -244,7 +245,7 @@ const handleLogin = async (params) => {
     if (!res) {
       return
     }
-    ElLoading.service({
+    loading.value = ElLoading.service({
       lock: true,
       text: '正在加载系统中...',
       background: 'rgba(0, 0, 0, 0.7)'
@@ -264,13 +265,9 @@ const handleLogin = async (params) => {
     } else {
       push({ path: redirect.value || permissionStore.addRouters[0].path })
     }
-  } catch {
-    loginLoading.value = false
   } finally {
-    setTimeout(() => {
-      const loadingInstance = ElLoading.service()
-      loadingInstance.close()
-    }, 400)
+    loginLoading.value = false
+    loading.value.close()
   }
 }
 

+ 10 - 10
src/views/mall/product/spu/components/SkuList.vue

@@ -80,7 +80,7 @@
       <el-table-column align="center" label="一级返佣(元)" min-width="168">
         <template #default="{ row }">
           <el-input-number
-            v-model="row.subCommissionFirstPrice"
+            v-model="row.firstBrokerageRecord"
             :min="0"
             :precision="2"
             :step="0.1"
@@ -91,7 +91,7 @@
       <el-table-column align="center" label="二级返佣(元)" min-width="168">
         <template #default="{ row }">
           <el-input-number
-            v-model="row.subCommissionSecondPrice"
+            v-model="row.secondBrokerageRecord"
             :min="0"
             :precision="2"
             :step="0.1"
@@ -181,12 +181,12 @@
     <template v-if="formData!.subCommissionType">
       <el-table-column align="center" label="一级返佣(元)" min-width="80">
         <template #default="{ row }">
-          {{ row.subCommissionFirstPrice }}
+          {{ row.firstBrokerageRecord }}
         </template>
       </el-table-column>
       <el-table-column align="center" label="二级返佣(元)" min-width="80">
         <template #default="{ row }">
-          {{ row.subCommissionSecondPrice }}
+          {{ row.secondBrokerageRecord }}
         </template>
       </el-table-column>
     </template>
@@ -295,8 +295,8 @@ const skuList = ref<Sku[]>([
     stock: 0, // 库存
     weight: 0, // 商品重量
     volume: 0, // 商品体积
-    subCommissionFirstPrice: 0, // 一级分销的佣金
-    subCommissionSecondPrice: 0 // 二级分销的佣金
+    firstBrokerageRecord: 0, // 一级分销的佣金
+    secondBrokerageRecord: 0 // 二级分销的佣金
   }
 ]) // 批量添加时的临时数据
 
@@ -415,8 +415,8 @@ const generateTableData = (propertyList: any[]) => {
       stock: 0,
       weight: 0,
       volume: 0,
-      subCommissionFirstPrice: 0,
-      subCommissionSecondPrice: 0
+      firstBrokerageRecord: 0,
+      secondBrokerageRecord: 0
     }
     // 如果存在属性相同的 sku 则不做处理
     const index = formData.value!.skus!.findIndex(
@@ -491,8 +491,8 @@ watch(
           stock: 0,
           weight: 0,
           volume: 0,
-          subCommissionFirstPrice: 0,
-          subCommissionSecondPrice: 0
+          firstBrokerageRecord: 0,
+          secondBrokerageRecord: 0
         }
       ]
     }

+ 4 - 4
src/views/mall/product/spu/form/BasicInfoForm.vue

@@ -332,8 +332,8 @@ defineExpose({ validate })
 const changeSubCommissionType = () => {
   // 默认为零,类型切换后也要重置为零
   for (const item of formData.skus) {
-    item.subCommissionFirstPrice = 0
-    item.subCommissionSecondPrice = 0
+    item.firstBrokerageRecord = 0
+    item.secondBrokerageRecord = 0
   }
 }
 
@@ -352,8 +352,8 @@ const onChangeSpec = () => {
       stock: 0,
       weight: 0,
       volume: 0,
-      subCommissionFirstPrice: 0,
-      subCommissionSecondPrice: 0
+      firstBrokerageRecord: 0,
+      secondBrokerageRecord: 0
     }
   ]
 }

+ 8 - 8
src/views/mall/product/spu/form/index.vue

@@ -82,8 +82,8 @@ const formData = ref<ProductSpuApi.Spu>({
       stock: 0, // 库存
       weight: 0, // 商品重量
       volume: 0, // 商品体积
-      subCommissionFirstPrice: 0, // 一级分销的佣金
-      subCommissionSecondPrice: 0 // 二级分销的佣金
+      firstBrokerageRecord: 0, // 一级分销的佣金
+      secondBrokerageRecord: 0 // 二级分销的佣金
     }
   ],
   description: '', // 商品详情
@@ -112,15 +112,15 @@ const getDetail = async () => {
           item.price = floatToFixed2(item.price)
           item.marketPrice = floatToFixed2(item.marketPrice)
           item.costPrice = floatToFixed2(item.costPrice)
-          item.subCommissionFirstPrice = floatToFixed2(item.subCommissionFirstPrice)
-          item.subCommissionSecondPrice = floatToFixed2(item.subCommissionSecondPrice)
+          item.firstBrokerageRecord = floatToFixed2(item.firstBrokerageRecord)
+          item.secondBrokerageRecord = floatToFixed2(item.secondBrokerageRecord)
         } else {
           // 回显价格分转元
           item.price = formatToFraction(item.price)
           item.marketPrice = formatToFraction(item.marketPrice)
           item.costPrice = formatToFraction(item.costPrice)
-          item.subCommissionFirstPrice = formatToFraction(item.subCommissionFirstPrice)
-          item.subCommissionSecondPrice = formatToFraction(item.subCommissionSecondPrice)
+          item.firstBrokerageRecord = formatToFraction(item.firstBrokerageRecord)
+          item.secondBrokerageRecord = formatToFraction(item.secondBrokerageRecord)
         }
       })
       formData.value = res
@@ -149,8 +149,8 @@ const submitForm = async () => {
       item.price = convertToInteger(item.price)
       item.marketPrice = convertToInteger(item.marketPrice)
       item.costPrice = convertToInteger(item.costPrice)
-      item.subCommissionFirstPrice = convertToInteger(item.subCommissionFirstPrice)
-      item.subCommissionSecondPrice = convertToInteger(item.subCommissionSecondPrice)
+      item.firstBrokerageRecord = convertToInteger(item.firstBrokerageRecord)
+      item.secondBrokerageRecord = convertToInteger(item.secondBrokerageRecord)
     })
     // 处理轮播图列表
     const newSliderPicUrls: any[] = []

+ 2 - 1
src/views/mall/trade/afterSale/detail/index.vue

@@ -195,7 +195,8 @@ const getDetail = async () => {
   if (id) {
     const res = await AfterSaleApi.getAfterSale(id)
     // 没有表单信息则关闭页面返回
-    if (res === null) {
+    if (res == null) {
+      message.notifyError('售后订单不存在')
       close()
     }
     formData.value = res

+ 4 - 3
src/views/mall/trade/order/detail/index.vue

@@ -245,9 +245,10 @@ const { params } = useRoute() // 查询参数
 const getDetail = async () => {
   const id = params.orderId as unknown as number
   if (id) {
-    const res = (await TradeOrderApi.getOrder(id)) as TradeOrderApi.OrderVO
+    const res = (await TradeOrderApi.getOrder(66666)) as TradeOrderApi.OrderVO
     // 没有表单信息则关闭页面返回
-    if (res === null) {
+    if (res == null) {
+      message.error('交易订单不存在')
       close()
     }
     formData.value = res
@@ -259,7 +260,7 @@ const { delView } = useTagsViewStore() // 视图操作
 const { push, currentRoute } = useRouter() // 路由
 const close = () => {
   delView(unref(currentRoute))
-  push({ name: 'TradeAfterSale' })
+  push({ name: 'TradeOrder' })
 }
 
 /** 复制 */

+ 50 - 32
src/views/mall/trade/order/index.vue

@@ -104,13 +104,19 @@
       <el-form-item label="聚合搜索">
         <el-input
           v-show="true"
-          v-model="queryType.v"
+          v-model="queryParams[queryType.k]"
           class="!w-280px"
           clearable
           placeholder="请输入"
         >
           <template #prepend>
-            <el-select v-model="queryType.k" class="!w-110px" clearable placeholder="全部">
+            <el-select
+              v-model="queryType.k"
+              class="!w-110px"
+              clearable
+              placeholder="全部"
+              @change="inputChangeSelect"
+            >
               <el-option
                 v-for="dict in searchList"
                 :key="dict.value"
@@ -335,41 +341,41 @@ const total = ref(2) // 列表的总页数
 const list = ref<TradeOrderApi.OrderVO[]>([]) // 列表的数据
 const queryFormRef = ref<FormInstance>() // 搜索的表单
 // 表单搜索
-const queryParams = reactive({
-  pageNo: 1, //首页
-  pageSize: 10, //页面大小
-  no: '',
-  userId: '',
-  userNickname: '',
-  userMobile: '',
-  receiverName: '',
-  receiverMobile: '',
-
-  terminal: '',
-  type: null,
-  status: null,
-  payChannelCode: '',
-  createTime: [],
-  deliveryType: null,
-  spuName: '',
-  itemCount: '',
-  pickUpStoreId: [],
-  logisticsId: null,
-  all: ''
+const queryParams = ref({
+  pageNo: 1, // 页数
+  pageSize: 10, // 每页显示数量
+  status: null, // 订单状态
+  payChannelCode: null, // 支付方式
+  createTime: null, // 创建时间
+  terminal: null, // 订单来源
+  type: null, // 订单类型
+  deliveryType: null, // 配送方式
+  logisticsId: null, // 快递公司
+  pickUpStoreId: null // 自提门店
 })
-const queryType = reactive({ k: '', v: '' }) // 订单搜索类型kv
-/**
- * 订单聚合搜索
- * 商品名称、商品件数、全部
- *
- * 需要后端支持 TODO
- */
+const queryType = reactive({ k: '' }) // 订单搜索类型 k
+
+// 订单聚合搜索 select 类型配置
 const searchList = ref([
   { value: 'no', label: '订单号' },
   { value: 'userId', label: '用户UID' },
   { value: 'userNickname', label: '用户昵称' },
   { value: 'userMobile', label: '用户电话' }
 ])
+/**
+ * 聚合搜索切换查询对象时触发
+ * @param val
+ */
+const inputChangeSelect = (val: string) => {
+  searchList.value
+    .filter((item) => item.value !== val)
+    ?.forEach((item1) => {
+      // 清除集合搜索无用属性
+      if (queryParams.value.hasOwnProperty(item1.value)) {
+        delete queryParams.value[item1.value]
+      }
+    })
+}
 
 const headerStyle = ({ row, columnIndex }: any) => {
   // 表头第一行第一列占 8
@@ -417,7 +423,7 @@ const spanMethod = ({ row, rowIndex, columnIndex }: SpanMethodProps) => {
 const getList = async () => {
   loading.value = true
   try {
-    const data = await TradeOrderApi.getOrderPage(queryParams)
+    const data = await TradeOrderApi.getOrderPage(unref(queryParams))
     list.value = data.list
     total.value = data.total
   } finally {
@@ -427,13 +433,25 @@ const getList = async () => {
 
 /** 搜索按钮操作 */
 const handleQuery = async () => {
-  queryParams.pageNo = 1
+  queryParams.value.pageNo = 1
   await getList()
 }
 
 /** 重置按钮操作 */
 const resetQuery = () => {
   queryFormRef.value?.resetFields()
+  queryParams.value = {
+    pageNo: 1, // 页数
+    pageSize: 10, // 每页显示数量
+    status: null, // 订单状态
+    payChannelCode: null, // 支付方式
+    createTime: null, // 创建时间
+    terminal: null, // 订单来源
+    type: null, // 订单类型
+    deliveryType: null, // 配送方式
+    logisticsId: null, // 快递公司
+    pickUpStoreId: null // 自提门店
+  }
   handleQuery()
 }