mirror of
				https://gitee.com/hhyykk/ipms-sjy-ui.git
				synced 2025-11-04 12:18:43 +08:00 
			
		
		
		
	!240 完善前端 mall-order 模块相关问题
Merge pull request !240 from puhui999/dev-to-dev
This commit is contained in:
		@@ -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 // 商品销量
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
 
 | 
			
		||||
@@ -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()
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
        }
 | 
			
		||||
      ]
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
    }
 | 
			
		||||
  ]
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -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[] = []
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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' })
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** 复制 */
 | 
			
		||||
 
 | 
			
		||||
@@ -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()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user