diff --git a/README.md b/README.md index f5619e8bc4a71d1c00e86e3dd61aea0127dc4841..4a0de6ae53b2342296890bbd7ddb55e5c5e4ea4d 100644 --- a/README.md +++ b/README.md @@ -38,14 +38,14 @@ | 框架 | 说明 | 版本 | |----------------------------------------------------------------------|------------------|--------| -| [Vue](https://staging-cn.vuejs.org/) | Vue 框架 | 3.2.47 | -| [Vite](https://cn.vitejs.dev//) | 开发与构建工具 | 4.3.1 | -| [Element Plus](https://element-plus.org/zh-CN/) | Element Plus | 2.3.3 | +| [Vue](https://staging-cn.vuejs.org/) | Vue 框架 | 3.3.4 | +| [Vite](https://cn.vitejs.dev//) | 开发与构建工具 | 4.3.8 | +| [Element Plus](https://element-plus.org/zh-CN/) | Element Plus | 2.3.4 | | [TypeScript](https://www.typescriptlang.org/docs/) | JavaScript 的超集 | 5.0.4 | -| [pinia](https://pinia.vuejs.org/) | Vue 存储库 替代 vuex5 | 2.0.35 | -| [vueuse](https://vueuse.org/) | 常用工具集 | 10.1.0 | +| [pinia](https://pinia.vuejs.org/) | Vue 存储库 替代 vuex5 | 2.1.3 | +| [vueuse](https://vueuse.org/) | 常用工具集 | 10.1.2 | | [vue-i18n](https://kazupon.github.io/vue-i18n/zh/introduction.html/) | 国际化 | 9.2.2 | -| [vue-router](https://router.vuejs.org/) | Vue 路由 | 4.1.6 | +| [vue-router](https://router.vuejs.org/) | Vue 路由 | 4.2.1 | | [windicss](https://cn.windicss.org/) | 下一代工具优先的 CSS 框架 | 3.5.6 | | [iconify](https://icon-sets.iconify.design/) | 在线图标库 | 3.1.0 | | [wangeditor](https://www.wangeditor.com/) | 富文本编辑器 | 5.1.23 | diff --git a/package.json b/package.json index 8cdf9380e5e9bbf122910238e3a41d721de4a9fa..d5a7ad01a3cd4e473b2fe84f0be77dd5b5ead423 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ "serve:pro": "vite preview --mode pro", "serve:dev": "vite preview --mode dev", "serve:test": "vite preview --mode test", + "preview": "pnpm build && vite preview", "npm:check": "npx npm-check-updates", "clean": "npx rimraf node_modules", "clean:cache": "npx rimraf node_modules/.cache", @@ -33,12 +34,12 @@ "@form-create/element-ui": "^3.1.17", "@iconify/iconify": "^3.1.0", "@videojs-player/vue": "^1.0.0", - "@vueuse/core": "^10.1.0", + "@vueuse/core": "^10.1.2", "@wangeditor/editor": "^5.1.23", "@wangeditor/editor-for-vue": "^5.1.10", - "@zxcvbn-ts/core": "^2.2.1", + "@zxcvbn-ts/core": "^3.0.1", "animate.css": "^4.1.1", - "axios": "^1.3.6", + "axios": "^1.4.0", "benz-amr-recorder": "^1.1.5", "bpmn-js-token-simulation": "^0.10.0", "camunda-bpmn-moddle": "^7.0.1", @@ -48,35 +49,35 @@ "diagram-js": "^11.6.0", "echarts": "^5.4.2", "echarts-wordcloud": "^2.1.0", - "element-plus": "2.3.3", + "element-plus": "2.3.4", "fast-xml-parser": "^4.2.2", - "highlight.js": "^11.7.0", + "highlight.js": "^11.8.0", "intro.js": "^7.0.1", "jsencrypt": "^3.3.2", "lodash-es": "^4.17.21", - "min-dash": "^4.1.0", + "min-dash": "^4.1.1", "mitt": "^3.0.0", "nprogress": "^0.2.0", - "pinia": "^2.0.35", + "pinia": "^2.1.3", "qrcode": "^1.5.3", - "qs": "^6.11.1", + "qs": "^6.11.2", "steady-xml": "^0.1.0", "url": "^0.11.0", "video.js": "^8.3.0", "vue": "3.3.4", "vue-dompurify-html": "^4.1.4", "vue-i18n": "9.2.2", - "vue-router": "^4.1.6", - "vue-types": "^5.0.2", + "vue-router": "^4.2.1", + "vue-types": "^5.0.3", "vuedraggable": "^4.1.0", "web-storage-cache": "^1.1.1", "xe-utils": "^3.5.7", "xml-js": "^1.6.11" }, "devDependencies": { - "@commitlint/cli": "^17.6.1", - "@commitlint/config-conventional": "^17.6.1", - "@iconify/json": "^2.2.54", + "@commitlint/cli": "^17.6.3", + "@commitlint/config-conventional": "^17.6.3", + "@iconify/json": "^2.2.67", "@intlify/unplugin-vue-i18n": "^0.10.0", "@purge-icons/generated": "^0.9.0", "@types/intro.js": "^5.1.1", @@ -85,39 +86,39 @@ "@types/nprogress": "^0.2.0", "@types/qrcode": "^1.5.0", "@types/qs": "^6.9.7", - "@typescript-eslint/eslint-plugin": "^5.59.0", - "@typescript-eslint/parser": "^5.59.0", - "@vitejs/plugin-legacy": "^4.0.2", - "@vitejs/plugin-vue": "^4.1.0", + "@typescript-eslint/eslint-plugin": "^5.59.6", + "@typescript-eslint/parser": "^5.59.6", + "@vitejs/plugin-legacy": "^4.0.3", + "@vitejs/plugin-vue": "^4.2.3", "@vitejs/plugin-vue-jsx": "^3.0.1", "autoprefixer": "^10.4.14", "bpmn-js": "^8.9.0", "bpmn-js-properties-panel": "^0.46.0", "consola": "^3.1.0", - "eslint": "^8.39.0", + "eslint": "^8.40.0", "eslint-config-prettier": "^8.8.0", - "eslint-define-config": "^1.18.0", + "eslint-define-config": "^1.20.0", "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-vue": "^9.11.0", - "lint-staged": "^13.2.1", + "eslint-plugin-vue": "^9.13.0", + "lint-staged": "^13.2.2", "postcss": "^8.4.23", "postcss-html": "^1.5.0", "postcss-scss": "^4.0.6", "prettier": "^2.8.8", - "rimraf": "^5.0.0", - "rollup": "^3.20.7", - "sass": "^1.62.0", - "stylelint": "^15.6.0", + "rimraf": "^5.0.1", + "rollup": "^3.22.0", + "sass": "^1.62.1", + "stylelint": "^15.6.2", "stylelint-config-html": "^1.1.0", "stylelint-config-recommended": "^12.0.0", "stylelint-config-standard": "^33.0.0", "stylelint-order": "^6.0.3", - "terser": "^5.17.1", + "terser": "^5.17.4", "typescript": "5.0.4", - "unplugin-auto-import": "^0.15.3", + "unplugin-auto-import": "^0.16.0", "unplugin-element-plus": "^0.7.1", "unplugin-vue-components": "^0.24.1", - "vite": "4.3.1", + "vite": "4.3.8", "vite-plugin-compression": "^0.5.1", "vite-plugin-ejs": "^1.6.4", "vite-plugin-eslint": "^1.8.1", @@ -126,8 +127,8 @@ "vite-plugin-svg-icons": "^2.0.1", "vite-plugin-top-level-await": "^1.3.0", "vite-plugin-vue-setup-extend-plus": "^0.1.0", - "vite-plugin-windicss": "^1.8.10", - "vue-tsc": "^1.4.4", + "vite-plugin-windicss": "^1.9.0", + "vue-tsc": "^1.6.5", "windicss": "^3.5.6" }, "engines": { diff --git a/src/api/mall/trade/order/index.ts b/src/api/mall/trade/order/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..5a401030a93c83809ac7e79eebaf227eba8ce3ed --- /dev/null +++ b/src/api/mall/trade/order/index.ts @@ -0,0 +1,11 @@ +import request from '@/config/axios' + +// 获得交易订单分页 +export const getOrderList = (params: PageParam) => { + return request.get({ url: '/trade/order/page', params }) +} + +// 获得交易订单详情 +export const getOrderDetail = (id: number) => { + return request.get({ url: '/trade/order/get-detail?id=' + id }) +} diff --git a/src/api/mall/trade/order/type/orderType.ts b/src/api/mall/trade/order/type/orderType.ts new file mode 100644 index 0000000000000000000000000000000000000000..cba4fbfff8cadf8c4d1de12fc60b4df58a8a5f51 --- /dev/null +++ b/src/api/mall/trade/order/type/orderType.ts @@ -0,0 +1,183 @@ +export interface TradeOrderPageItemRespVO { + // 订单编号 + id: number + // 订单流水号 + no: string + // 下单时间 + createTime: Date + // 订单类型 + type: number + // 订单来源 + terminal: number + // 用户编号 + userId: number + // 用户 IP + userIp: string + // 用户备注 + userRemark: string + // 订单状态 + status: number + // 购买的商品数量 + productCount: number + // 订单完成时间 + finishTime?: Date + // 订单取消时间 + cancelTime?: Date + // 取消类型 + cancelType?: number + // 商家备注 + remark?: string + // 支付订单编号 + payOrderId: number + // 是否已支付 + payed: boolean + // 付款时间 + payTime?: Date + // 支付渠道 + payChannelCode: string + // 商品原价(总) + originalPrice: number + // 订单原价(总) + orderPrice: number + // 订单优惠(总) + discountPrice: number + // 运费金额 + deliveryPrice: number + // 订单调价(总) + adjustPrice: number + // 应付金额(总) + payPrice: number + // 配送模板编号 + deliveryTemplateId?: number + // 发货物流公司编号 + logisticsId?: number + // 发货物流单号 + logisticsNo?: string + // 发货状态 + deliveryStatus: number + // 发货时间 + deliveryTime?: Date + // 收货时间 + receiveTime?: Date + // 收件人名称 + receiverName: string + // 收件人手机 + receiverMobile: string + // 收件人地区编号 + receiverAreaId: number + // 收件人邮编 + receiverPostCode: number + // 收件人详细地址 + receiverDetailAddress: string + // 售后状态 + afterSaleStatus?: number + // 退款金额 + refundPrice: number + // 优惠劵编号 + couponId?: number + // 优惠劵减免金额 + couponPrice: number + // 积分抵扣的金额 + pointPrice: number + //收件人地区名字 + receiverAreaName: string + // 订单项列表 + items: TradeOrderItemBaseVO[] +} + +/** + * 交易订单项 Base VO,提供给添加、修改、详细的子 VO 使用 + * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成 + */ +export interface TradeOrderItemBaseVO { + // ========== 订单项基本信息 ========== + /** + * 编号 + */ + id: number + /** + * 用户编号 + */ + userId: number + /** + * 订单编号 + */ + orderId: number + // ========== 商品基本信息 ========== + /** + * 商品 SPU 编号 + */ + spuId: number + /** + * 商品 SPU 名称 + */ + spuName: string + /** + * 商品 SKU 编号 + */ + skuId: number + /** + * 商品图片 + */ + picUrl: string + /** + * 购买数量 + */ + count: number + // ========== 价格 + 支付基本信息 ========== + /** + * 商品原价(总) + */ + originalPrice: number + /** + * 商品原价(单) + */ + originalUnitPrice: number + /** + * 商品优惠(总) + */ + discountPrice: number + /** + * 商品实付金额(总) + */ + payPrice: number + /** + * 子订单分摊金额(总) + */ + orderPartPrice: number + /** + * 分摊后子订单实付金额(总) + */ + orderDividePrice: number + // ========== 营销基本信息 ========== + // TODO 芋艿:在捉摸一下 + // ========== 售后基本信息 ========== + /** + * 售后状态 + */ + afterSaleStatus: number + //属性数组 + properties: ProductPropertyValueDetailRespVO[] +} + +/** + * 管理后台 - 商品属性值的明细 Response VO + */ +export interface ProductPropertyValueDetailRespVO { + /** + * 属性的编号 + */ + propertyId: number + /** + * 属性的名称 + */ + propertyName: string + /** + * 属性值的编号 + */ + valueId: number + /** + * 属性值的名称 + */ + valueName: string +} diff --git a/src/plugins/echarts/index.ts b/src/plugins/echarts/index.ts index 34f756f64c56b7ac1d8b6b13688cac7f5deb1f1d..bfccbb481b9d9ab0d66b95833e45021b62fc5e1a 100644 --- a/src/plugins/echarts/index.ts +++ b/src/plugins/echarts/index.ts @@ -6,7 +6,8 @@ import { PieChart, MapChart, PictorialBarChart, - RadarChart + RadarChart, + GaugeChart } from 'echarts/charts' import { @@ -16,7 +17,8 @@ import { PolarComponent, AriaComponent, ParallelComponent, - LegendComponent + LegendComponent, + ToolboxComponent } from 'echarts/components' import { CanvasRenderer } from 'echarts/renderers' @@ -25,6 +27,7 @@ echarts.use([ LegendComponent, TitleComponent, TooltipComponent, + ToolboxComponent, GridComponent, PolarComponent, AriaComponent, @@ -35,7 +38,8 @@ echarts.use([ MapChart, CanvasRenderer, PictorialBarChart, - RadarChart + RadarChart, + GaugeChart ]) export default echarts diff --git a/src/router/modules/remaining.ts b/src/router/modules/remaining.ts index f7e56fd0b181b290031cb897ecb6b368a6db6926..be027cbcb6ed15699d0cc121550c4da8e3193f19 100644 --- a/src/router/modules/remaining.ts +++ b/src/router/modules/remaining.ts @@ -195,6 +195,22 @@ const remainingRouter: AppRouteRecordRaw[] = [ noTagsView: true } }, + { + path: '/trade/order', + component: Layout, + name: 'order', + meta: { + hidden: true + }, + children: [ + { + path: 'detail', + name: 'TradeOrderDetail', + component: () => import('@/views/mall/trade/order/tradeOrderDetail.vue'), + meta: { title: '订单详情', hidden: true } + } + ] + }, { path: '/403', component: () => import('@/views/Error/403.vue'), diff --git a/src/utils/dict.ts b/src/utils/dict.ts index 73913b911ac8c3b24fe9c6c560dbcdb89799deed..1faaa65f16bd9a8920e39bac972fbc4243b0bb82 100644 --- a/src/utils/dict.ts +++ b/src/utils/dict.ts @@ -33,7 +33,6 @@ export const getIntDictOptions = (dictType: string) => { value: parseInt(dict.value + '') }) }) - return dictOption } @@ -153,5 +152,16 @@ export enum DICT_TYPE { PROMOTION_COUPON_STATUS = 'promotion_coupon_status', // 优惠劵的状态 PROMOTION_COUPON_TAKE_TYPE = 'promotion_coupon_take_type', // 优惠劵的领取方式 PROMOTION_ACTIVITY_STATUS = 'promotion_activity_status', // 优惠活动的状态 - PROMOTION_CONDITION_TYPE = 'promotion_condition_type' // 营销的条件类型枚举 + PROMOTION_CONDITION_TYPE = 'promotion_condition_type', // 营销的条件类型枚举 + + //===add by 20230530==== + // ========== MALL - ORDER 模块 ========== + TRADE_AFTER_SALE_STATUS = 'trade_after_sale_status', // 售后 - 状态 + TRADE_AFTER_SALE_WAY = 'trade_after_sale_way', // 售后 - 方式 + TRADE_AFTER_SALE_TYPE = 'trade_after_sale_type', // 售后 - 类型 + TRADE_ORDER_TYPE = 'trade_order_type', // 订单 - 类型 + TRADE_ORDER_STATUS = 'trade_order_status', // 订单 - 状态 + TRADE_ORDER_ITEM_AFTER_SALE_STATUS = 'trade_order_item_after_sale_status', // 订单项 - 售后状态 + + TERMINAL = 'terminal' } diff --git a/src/views/infra/redis/index.vue b/src/views/infra/redis/index.vue index 011f8e590681a96c66d053b7e47f01e8e4af731c..f98f2f30928ccba86bc3a7ba35135b7f666767f2 100644 --- a/src/views/infra/redis/index.vue +++ b/src/views/infra/redis/index.vue @@ -63,9 +63,6 @@ diff --git a/src/views/mall/trade/order/tradeOrderDetail-crmeb.vue b/src/views/mall/trade/order/tradeOrderDetail-crmeb.vue new file mode 100644 index 0000000000000000000000000000000000000000..ae4fe01c1e760f6387d2c77755b5b4577ae8d08b --- /dev/null +++ b/src/views/mall/trade/order/tradeOrderDetail-crmeb.vue @@ -0,0 +1,141 @@ + + + diff --git a/src/views/mall/trade/order/tradeOrderDetail.vue b/src/views/mall/trade/order/tradeOrderDetail.vue new file mode 100644 index 0000000000000000000000000000000000000000..3e261550d29f812348bd6df68545c184c6795d3e --- /dev/null +++ b/src/views/mall/trade/order/tradeOrderDetail.vue @@ -0,0 +1,355 @@ + + +