diff --git a/.env.dev b/.env.dev index e8cf8938..154d88fe 100644 --- a/.env.dev +++ b/.env.dev @@ -28,4 +28,4 @@ VITE_DROP_CONSOLE=false VITE_SOURCEMAP=true # 输出路径 -VITE_OUT_DIR=dist-dev +VITE_OUT_DIR=dist diff --git a/.env.test b/.env.test deleted file mode 100644 index 0793af25..00000000 --- a/.env.test +++ /dev/null @@ -1,31 +0,0 @@ -# 测试环境 -NODE_ENV=production - -VITE_DEV=false - -# 请求路径 -VITE_BASE_URL='http://localhost:48080' - -# 上传路径 -VITE_UPLOAD_URL='http://localhost:48080/admin-api/infra/file/upload' - -# 接口前缀 -VITE_API_BASEPATH= - -# 接口地址 -VITE_API_URL=/admin-api - -# 是否删除debugger -VITE_DROP_DEBUGGER=false - -# 是否删除console.log -VITE_DROP_CONSOLE=false - -# 是否sourcemap -VITE_SOURCEMAP=true - -# 打包路径 -VITE_BASE_PATH=/ - -# 输出路径 -VITE_OUT_DIR=dist-test diff --git a/.eslintrc.js b/.eslintrc.js index 5a7245ac..31c239b6 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,4 +1,6 @@ -module.exports = { +// @ts-check +const { defineConfig } = require('eslint-define-config') +module.exports = defineConfig({ root: true, env: { browser: true, @@ -16,9 +18,16 @@ module.exports = { jsx: true } }, - extends: ['plugin:vue/vue3-recommended', 'prettier', 'plugin:@typescript-eslint/recommended', 'plugin:prettier/recommended'], + extends: [ + 'plugin:vue/vue3-recommended', + 'plugin:@typescript-eslint/recommended', + 'prettier', + 'plugin:prettier/recommended' + ], rules: { 'vue/script-setup-uses-vars': 'error', + 'vue/no-reserved-component-names': 'off', + 'vue/no-setup-props-destructure': 'off', '@typescript-eslint/ban-ts-ignore': 'off', '@typescript-eslint/explicit-function-return-type': 'off', '@typescript-eslint/no-explicit-any': 'off', @@ -31,20 +40,8 @@ module.exports = { '@typescript-eslint/ban-types': 'off', '@typescript-eslint/no-non-null-assertion': 'off', '@typescript-eslint/explicit-module-boundary-types': 'off', - '@typescript-eslint/no-unused-vars': [ - 'error', - { - argsIgnorePattern: '^_', - varsIgnorePattern: '^_' - } - ], - 'no-unused-vars': [ - 'error', - { - argsIgnorePattern: '^_', - varsIgnorePattern: '^_' - } - ], + '@typescript-eslint/no-unused-vars': 'off', + 'no-unused-vars': 'off', 'space-before-function-paren': 'off', 'vue/attributes-order': 'off', @@ -68,6 +65,7 @@ module.exports = { math: 'always' } ], - 'vue/multi-word-component-names': 'off' + 'vue/multi-word-component-names': 'off', + 'vue/no-v-html': 'off' } -} +}) diff --git a/.vscode/extensions.json b/.vscode/extensions.json index d1530933..5d7e57f3 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,15 +1,19 @@ { "recommendations": [ - "voorjaar.windicss-intellisense", + "christian-kohler.path-intellisense", "vscode-icons-team.vscode-icons", "davidanson.vscode-markdownlint", "stylelint.vscode-stylelint", "dbaeumer.vscode-eslint", "esbenp.prettier-vscode", - "vue.volar", + "mrmlnc.vscode-less", "lokalise.i18n-ally", + "redhat.vscode-yaml", + "csstools.postcss", "mikestead.dotenv", "eamodio.gitlens", - "antfu.iconify" + "antfu.iconify", + "antfu.unocss", + "Vue.volar" ] } diff --git a/.vscode/settings.json b/.vscode/settings.json index 469e4017..45156944 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,7 +1,5 @@ { "typescript.tsdk": "./node_modules/typescript/lib", - "volar.tsPlugin": true, - "volar.tsPluginStatus": false, "npm.packageManager": "pnpm", "editor.tabSize": 2, "prettier.printWidth": 100, // 超过最大值换行 @@ -102,59 +100,35 @@ "i18n-ally.displayLanguage": "zh-CN", "i18n-ally.enabledFrameworks": ["vue", "react"], "cSpell.words": [ - "vben", - "windicss", - "tailwind", + "brotli", "browserslist", - "tailwindcss", + "codemirror", + "commitlint", + "cropperjs", + "echarts", "esnext", - "antv", - "tinymce", + "esno", + "iconify", + "INTLIFY", + "lintstagedrc", + "logicflow", + "nprogress", + "pinia", + "pnpm", "qrcode", "sider", - "pinia", - "sider", - "nprogress", - "INTLIFY", - "stylelint", - "esno", - "vitejs", "sortablejs", - "codemirror", - "iconify", - "commitlint", - "vditor", - "echarts", - "cropperjs", - "logicflow", + "stylelint", + "unocss", + "unplugin", + "unref", + "videojs", + "vitejs", "vueuse", - "zxcvbn", - "lintstagedrc", - "brotli", - "sider", - "pnpm", - "antd" - ], - "vetur.format.scriptInitialIndent": true, - "vetur.format.styleInitialIndent": true, - "vetur.validation.script": false, - "MicroPython.executeButton": [ - { - "text": "▶", - "tooltip": "运行", - "alignment": "left", - "command": "extension.executeFile", - "priority": 3.5 - } - ], - "MicroPython.syncButton": [ - { - "text": "$(sync)", - "tooltip": "同步", - "alignment": "left", - "command": "extension.execute", - "priority": 4 - } + "wangeditor", + "xingyu", + "yudao", + "zxcvbn" ], // 控制相关文件嵌套展示 "explorer.fileNesting.enabled": true, @@ -163,7 +137,8 @@ "*.ts": "$(capture).test.ts, $(capture).test.tsx", "*.tsx": "$(capture).test.ts, $(capture).test.tsx", "*.env": "$(capture).env.*", - "package.json": "pnpm-lock.yaml,yarn.lock,LICENSE,README*,CHANGELOG*,CNAME,.gitattributes,.gitignore,prettier.config.js,stylelint.config.js,commitlint.config.js,.stylelintignore,.prettierignore,.gitpod.yml,.eslintrc.js,.eslintignore" + "package.json": "pnpm-lock.yaml,yarn.lock,LICENSE,README*,CHANGELOG*,CNAME,.gitattributes,.eslintrc-auto-import.json,.gitignore,prettier.config.js,stylelint.config.js,commitlint.config.js,.stylelintignore,.prettierignore,.gitpod.yml,.eslintrc.js,.eslintignore" }, - "terminal.integrated.scrollback": 10000 + "terminal.integrated.scrollback": 10000, + "nuxt.isNuxtApp": false } diff --git a/README.md b/README.md index dc69a06d..7966b7e8 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ ## 🐶 新手必读 -* nodejs > 16.0.0 && pnpm > 8.6.0 (强制使用pnpm) +* nodejs > 16.18.0 && pnpm > 8.6.0 (强制使用pnpm) * 演示地址【Vue3 + element-plus】: * 演示地址【Vue3 + vben(ant-design-vue)】: * 演示地址【Vue2 + element-ui】: @@ -24,7 +24,7 @@ * 改换 saas,自动引入等功能 * 使用 Element Plus 免费开源的中后台模版,具备如下特性: -![首页](preview/home.png) +![首页](public/home.png) * **最新技术栈**:使用 Vue3、Vite4 等前端前沿技术开发 * **TypeScript**: 应用程序级 JavaScript 的语言 @@ -39,15 +39,15 @@ | 框架 | 说明 | 版本 | |----------------------------------------------------------------------|------------------|--------| | [Vue](https://staging-cn.vuejs.org/) | Vue 框架 | 3.3.4 | -| [Vite](https://cn.vitejs.dev//) | 开发与构建工具 | 4.3.9 | -| [Element Plus](https://element-plus.org/zh-CN/) | Element Plus | 2.3.7 | -| [TypeScript](https://www.typescriptlang.org/docs/) | JavaScript 的超集 | 5.0.4 | -| [pinia](https://pinia.vuejs.org/) | Vue 存储库 替代 vuex5 | 2.1.4 | -| [vueuse](https://vueuse.org/) | 常用工具集 | 10.2.0 | +| [Vite](https://cn.vitejs.dev//) | 开发与构建工具 | 4.4.9 | +| [Element Plus](https://element-plus.org/zh-CN/) | Element Plus | 2.3.12 | +| [TypeScript](https://www.typescriptlang.org/docs/) | JavaScript 的超集 | 5.1.6 | +| [pinia](https://pinia.vuejs.org/) | Vue 存储库 替代 vuex5 | 2.1.6 | +| [vueuse](https://vueuse.org/) | 常用工具集 | 10.4.1 | | [vue-i18n](https://kazupon.github.io/vue-i18n/zh/introduction.html/) | 国际化 | 9.2.2 | -| [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 | +| [vue-router](https://router.vuejs.org/) | Vue 路由 | 4.2.4 | +| [unocss](https://uno.antfu.me/) | 原子 css | 0.55.7 | +| [iconify](https://icon-sets.iconify.design/) | 在线图标库 | 3.1.1 | | [wangeditor](https://www.wangeditor.com/) | 富文本编辑器 | 5.1.23 | ## 开发工具 @@ -56,14 +56,14 @@ | 插件名 | 功能 | |-------------------------------|--------------------------| -| TypeScript Vue Plugin (Volar) | 用于 TypeScript 的 Vue 插件 | +| TypeScript Vue Plugin (Volar) | 用于 TypeScript 的 Vue 插件 | | Vue Language Features (Volar) | Vue3.0 语法支持 | -| WindiCSS IntelliSense | 自动完成、语法突出显示、代码折叠和构建等高级功能 | -| Iconify IntelliSense | Iconify 预览和搜索 | -| i18n Ally | 国际化智能提示 | +| unocss | unocss for vscode | +| Iconify IntelliSense | Iconify 预览和搜索 | +| i18n Ally | 国际化智能提示 | | Stylelint | Css 格式化 | -| Prettier | 代码格式化 | -| ESLint | 脚本代码检查 | +| Prettier | 代码格式化 | +| ESLint | 脚本代码检查 | | DotENV | env 文件高亮 | ## 内置功能 diff --git a/build/vite/index.ts b/build/vite/index.ts index 7b4a17bd..bdda98d0 100644 --- a/build/vite/index.ts +++ b/build/vite/index.ts @@ -1,7 +1,6 @@ import { resolve } from 'path' import Vue from '@vitejs/plugin-vue' import VueJsx from '@vitejs/plugin-vue-jsx' -import WindiCSS from 'vite-plugin-windicss' import progress from 'vite-plugin-progress' import EslintPlugin from 'vite-plugin-eslint' import PurgeIcons from 'vite-plugin-purge-icons' @@ -14,6 +13,7 @@ import viteCompression from 'vite-plugin-compression' import topLevelAwait from 'vite-plugin-top-level-await' import VueI18nPlugin from '@intlify/unplugin-vue-i18n/vite' import { createSvgIconsPlugin } from 'vite-plugin-svg-icons' +import UnoCSS from 'unocss/vite' export function createVitePlugins() { const root = process.cwd() @@ -24,7 +24,7 @@ export function createVitePlugins() { return [ Vue(), VueJsx(), - WindiCSS(), + UnoCSS(), progress(), PurgeIcons(), ElementPlus({}), diff --git a/build/vite/optimize.ts b/build/vite/optimize.ts index 2c73f72b..25b5f4cc 100644 --- a/build/vite/optimize.ts +++ b/build/vite/optimize.ts @@ -8,7 +8,7 @@ const include = [ 'pinia', 'dayjs', 'qrcode', - 'windicss', + 'unocss', 'vue-router', 'vue-types', 'vue-i18n', @@ -37,6 +37,8 @@ const include = [ 'element-plus/es', 'element-plus/es/locale/lang/zh-cn', 'element-plus/es/locale/lang/en', + 'element-plus/es/components/avatar/style/css', + 'element-plus/es/components/space/style/css', 'element-plus/es/components/backtop/style/css', 'element-plus/es/components/form/style/css', 'element-plus/es/components/radio-group/style/css', diff --git a/package.json b/package.json index fc3c4432..3667dc0d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "yudao-ui-admin-vue3", - "version": "1.8.0-snapshot", + "version": "1.8.1-snapshot", "description": "基于vue3、vite4、element-plus、typesScript", "author": "xingyu", "private": false, @@ -11,64 +11,61 @@ "ts:check": "vue-tsc --noEmit", "build:pro": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode pro", "build:dev": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode dev", + "build:base": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode base", "build:stage": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode stage", - "build:test": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode test", "build:static": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode static", "build:front": "node --max_old_space_size=8192 ./node_modules/vite/bin/vite.js build --mode front", "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", + "preview": "pnpm build:base && vite preview", "clean": "npx rimraf node_modules", "clean:cache": "npx rimraf node_modules/.cache", "lint:eslint": "eslint --fix --ext .js,.ts,.vue ./src", "lint:format": "prettier --write --loglevel warn \"src/**/*.{js,ts,json,tsx,css,less,scss,vue,html,md}\"", - "lint:style": "stylelint --fix \"**/*.{vue,less,postcss,css,scss}\" --cache --cache-location node_modules/.cache/stylelint/", - "lint:lint-staged": "lint-staged -c ", - "lint:pretty": "pretty-quick --staged" + "lint:style": "stylelint --fix \"./src/**/*.{vue,less,postcss,css,scss}\" --cache --cache-location node_modules/.cache/stylelint/", + "lint:lint-staged": "lint-staged -c " }, "dependencies": { "@element-plus/icons-vue": "^2.1.0", "@form-create/designer": "^3.1.3", - "@form-create/element-ui": "^3.1.18", + "@form-create/element-ui": "^3.1.24", "@iconify/iconify": "^3.1.1", "@videojs-player/vue": "^1.0.0", - "@vueuse/core": "^10.2.1", + "@vueuse/core": "^10.4.1", "@wangeditor/editor": "^5.1.23", "@wangeditor/editor-for-vue": "^5.1.10", - "@zxcvbn-ts/core": "^3.0.2", + "@zxcvbn-ts/core": "^3.0.3", "animate.css": "^4.1.1", - "axios": "^1.4.0", + "axios": "^1.5.0", "benz-amr-recorder": "^1.1.5", "bpmn-js-token-simulation": "^0.10.0", "camunda-bpmn-moddle": "^7.0.1", - "cropperjs": "^1.5.13", + "cropperjs": "^1.6.0", "crypto-js": "^4.1.1", "dayjs": "^1.11.9", - "diagram-js": "^11.6.0", - "echarts": "^5.4.2", + "diagram-js": "^12.3.0", + "echarts": "^5.4.3", "echarts-wordcloud": "^2.1.0", - "element-plus": "2.3.7", - "fast-xml-parser": "^4.2.5", + "element-plus": "2.3.12", + "fast-xml-parser": "^4.2.7", "highlight.js": "^11.8.0", - "intro.js": "^7.0.1", + "intro.js": "^7.2.0", "jsencrypt": "^3.3.2", "lodash-es": "^4.17.21", "min-dash": "^4.1.1", "mitt": "^3.0.1", "nprogress": "^0.2.0", - "pinia": "^2.1.4", + "pinia": "^2.1.6", "qrcode": "^1.5.3", "qs": "^6.11.2", "steady-xml": "^0.1.0", - "url": "^0.11.1", - "video.js": "^8.3.0", + "url": "^0.11.2", + "video.js": "^7.21.5", "vue": "3.3.4", "vue-dompurify-html": "^4.1.4", "vue-i18n": "9.2.2", "vue-router": "^4.2.4", - "vue-types": "^5.1.0", + "vue-types": "^5.1.1", "vuedraggable": "^4.1.0", "vxe-table": "^4.3.11", "web-storage-cache": "^1.1.1", @@ -76,50 +73,53 @@ "xml-js": "^1.6.11" }, "devDependencies": { - "@commitlint/cli": "^17.6.6", - "@commitlint/config-conventional": "^17.6.6", - "@iconify/json": "^2.2.87", - "@intlify/unplugin-vue-i18n": "^0.12.1", + "@commitlint/cli": "^17.7.1", + "@commitlint/config-conventional": "^17.7.0", + "@iconify/json": "^2.2.114", + "@intlify/unplugin-vue-i18n": "^1.0.1", "@purge-icons/generated": "^0.9.0", "@types/intro.js": "^5.1.1", - "@types/lodash-es": "^4.17.7", - "@types/node": "^20.4.1", + "@types/lodash-es": "^4.17.9", + "@types/node": "^20.6.0", "@types/nprogress": "^0.2.0", - "@types/qrcode": "^1.5.1", - "@types/qs": "^6.9.7", - "@typescript-eslint/eslint-plugin": "^5.61.0", - "@typescript-eslint/parser": "^5.61.0", - "@vitejs/plugin-legacy": "^4.1.0", - "@vitejs/plugin-vue": "^4.2.3", - "@vitejs/plugin-vue-jsx": "^3.0.1", - "autoprefixer": "^10.4.14", + "@types/qrcode": "^1.5.2", + "@types/qs": "^6.9.8", + "@typescript-eslint/eslint-plugin": "^6.6.0", + "@typescript-eslint/parser": "^6.6.0", + "@unocss/transformer-variant-group": "^0.55.7", + "@vitejs/plugin-legacy": "^4.1.1", + "@vitejs/plugin-vue": "^4.3.4", + "@vitejs/plugin-vue-jsx": "^3.0.2", + "@vue-macros/volar": "^0.14.3", + "autoprefixer": "^10.4.15", "bpmn-js": "^8.9.0", "bpmn-js-properties-panel": "^0.46.0", "consola": "^3.2.3", - "eslint": "^8.44.0", - "eslint-config-prettier": "^8.8.0", - "eslint-define-config": "^1.21.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-vue": "^9.15.1", - "lint-staged": "^13.2.3", - "postcss": "^8.4.25", + "eslint": "^8.49.0", + "eslint-config-prettier": "^9.0.0", + "eslint-define-config": "^1.23.0", + "eslint-plugin-prettier": "^5.0.0", + "eslint-plugin-vue": "^9.17.0", + "lint-staged": "^14.0.1", + "postcss": "^8.4.29", "postcss-html": "^1.5.0", - "postcss-scss": "^4.0.6", - "prettier": "^2.8.8", + "postcss-scss": "^4.0.8", + "prettier": "^3.0.3", "rimraf": "^5.0.1", - "rollup": "^3.26.2", - "sass": "^1.63.6", - "stylelint": "^15.10.1", + "rollup": "^3.29.1", + "sass": "^1.66.1", + "stylelint": "^15.10.3", + "stylelint-config-html": "^1.1.0", "stylelint-config-recommended": "^13.0.0", - "stylelint-config-recommended-vue": "^1.4.0", "stylelint-config-standard": "^34.0.0", "stylelint-order": "^6.0.3", - "terser": "^5.18.2", + "terser": "^5.19.4", "typescript": "5.1.6", + "unocss": "^0.55.7", "unplugin-auto-import": "^0.16.6", - "unplugin-element-plus": "^0.7.2", - "unplugin-vue-components": "^0.25.1", - "vite": "4.4.2", + "unplugin-element-plus": "^0.8.0", + "unplugin-vue-components": "^0.25.2", + "vite": "4.4.9", "vite-plugin-compression": "^0.5.1", "vite-plugin-ejs": "^1.6.4", "vite-plugin-eslint": "^1.8.1", @@ -127,9 +127,8 @@ "vite-plugin-purge-icons": "^0.9.2", "vite-plugin-svg-icons": "^2.0.1", "vite-plugin-top-level-await": "^1.3.1", - "vite-plugin-windicss": "^1.9.0", - "vue-tsc": "^1.8.4", - "windicss": "^3.5.6" + "vue-eslint-parser": "^9.3.1", + "vue-tsc": "^1.8.10" }, "license": "MIT", "repository": { diff --git a/preview/home.png b/public/home.png old mode 100755 new mode 100644 similarity index 100% rename from preview/home.png rename to public/home.png diff --git a/src/api/login/index.ts b/src/api/login/index.ts index 47d011a6..6ab3edc5 100644 --- a/src/api/login/index.ts +++ b/src/api/login/index.ts @@ -37,11 +37,6 @@ export const getInfoApi = () => { return request.get({ url: '/system/auth/get-permission-info' }) } -// 路由 -export const getAsyncRoutesApi = () => { - return request.get({ url: '/system/auth/list-menus' }) -} - //获取登录验证码 export const sendSmsCodeApi = (data: SmsCodeVO) => { return request.post({ url: '/system/auth/send-sms-code', data }) diff --git a/src/api/mall/product/comment.ts b/src/api/mall/product/comment.ts new file mode 100644 index 00000000..defdbb93 --- /dev/null +++ b/src/api/mall/product/comment.ts @@ -0,0 +1,49 @@ +import request from '@/config/axios' + +export interface CommentVO { + id: number + userId: number + userNickname: string + userAvatar: string + anonymous: boolean + orderId: number + orderItemId: number + spuId: number + spuName: string + skuId: number + visible: boolean + scores: number + descriptionScores: number + benefitScores: number + content: string + picUrls: string + replyStatus: boolean + replyUserId: number + replyContent: string + replyTime: Date +} + +// 查询商品评论列表 +export const getCommentPage = async (params) => { + return await request.get({ url: `/product/comment/page`, params }) +} + +// 查询商品评论详情 +export const getComment = async (id: number) => { + return await request.get({ url: `/product/comment/get?id=` + id }) +} + +// 添加自评 +export const createComment = async (data: CommentVO) => { + return await request.post({ url: `/product/comment/create`, data }) +} + +// 显示 / 隐藏评论 +export const updateCommentVisible = async (data: any) => { + return await request.put({ url: `/product/comment/update-visible`, data }) +} + +// 商家回复 +export const replyComment = async (data: any) => { + return await request.put({ url: `/product/comment/reply`, data }) +} diff --git a/src/api/mall/product/spu.ts b/src/api/mall/product/spu.ts index 0ea324b8..2ad9bc60 100644 --- a/src/api/mall/product/spu.ts +++ b/src/api/mall/product/spu.ts @@ -9,18 +9,19 @@ export interface Property { export interface Sku { id?: number // 商品 SKU 编号 + name?: string // 商品 SKU 名称 spuId?: number // SPU 编号 properties?: Property[] // 属性数组 - price?: number // 商品价格 - marketPrice?: number // 市场价 - costPrice?: number // 成本价 + price?: number | string // 商品价格 + marketPrice?: number | string // 市场价 + costPrice?: number | string // 成本价 barCode?: string // 商品条码 picUrl?: string // 图片地址 stock?: number // 库存 weight?: number // 商品重量,单位:kg 千克 volume?: number // 商品体积,单位:m^3 平米 - subCommissionFirstPrice?: number // 一级分销的佣金 - subCommissionSecondPrice?: number // 二级分销的佣金 + subCommissionFirstPrice?: number | string // 一级分销的佣金 + subCommissionSecondPrice?: number | string // 二级分销的佣金 salesCount?: number // 商品销量 } diff --git a/src/api/mall/promotion/bargain/bargainActivity.ts b/src/api/mall/promotion/bargain/bargainActivity.ts new file mode 100644 index 00000000..1e5d5f78 --- /dev/null +++ b/src/api/mall/promotion/bargain/bargainActivity.ts @@ -0,0 +1,64 @@ +import request from '@/config/axios' +import { Sku, Spu } from '@/api/mall/product/spu' + +export interface BargainActivityVO { + id?: number + name?: string + startTime?: Date + endTime?: Date + status?: number + userSize?: number // 达到该人数,才能砍到低价 + bargainCount?: number // 最大帮砍次数 + totalLimitCount?: number // 最大购买次数 + spuId: number + skuId: number + bargainFirstPrice: number // 砍价起始价格,单位分 + bargainPrice: number // 砍价底价 + stock: number // 活动库存 + randomMinPrice?: number // 用户每次砍价的最小金额,单位:分 + randomMaxPrice?: number // 用户每次砍价的最大金额,单位:分 + successCount?: number // 砍价成功数量 +} + +// 砍价活动所需属性。选择的商品和属性的时候使用方便使用活动的通用封装 +export interface BargainProductVO { + spuId: number + skuId: number + bargainFirstPrice: number // 砍价起始价格,单位分 + bargainPrice: number // 砍价底价 + stock: number // 活动库存 +} + +// 扩展 Sku 配置 +export type SkuExtension = Sku & { + productConfig: BargainProductVO +} + +export interface SpuExtension extends Spu { + skus: SkuExtension[] // 重写类型 +} + +// 查询砍价活动列表 +export const getBargainActivityPage = async (params: any) => { + return await request.get({ url: '/promotion/bargain-activity/page', params }) +} + +// 查询砍价活动详情 +export const getBargainActivity = async (id: number) => { + return await request.get({ url: '/promotion/bargain-activity/get?id=' + id }) +} + +// 新增砍价活动 +export const createBargainActivity = async (data: BargainActivityVO) => { + return await request.post({ url: '/promotion/bargain-activity/create', data }) +} + +// 修改砍价活动 +export const updateBargainActivity = async (data: BargainActivityVO) => { + return await request.put({ url: '/promotion/bargain-activity/update', data }) +} + +// 删除砍价活动 +export const deleteBargainActivity = async (id: number) => { + return await request.delete({ url: '/promotion/bargain-activity/delete?id=' + id }) +} diff --git a/src/api/mall/promotion/combination/combinationactivity.ts b/src/api/mall/promotion/combination/combinationActivity.ts similarity index 92% rename from src/api/mall/promotion/combination/combinationactivity.ts rename to src/api/mall/promotion/combination/combinationActivity.ts index 71d5d2a4..f89264e4 100644 --- a/src/api/mall/promotion/combination/combinationactivity.ts +++ b/src/api/mall/promotion/combination/combinationActivity.ts @@ -1,8 +1,6 @@ import request from '@/config/axios' import { Sku, Spu } from '@/api/mall/product/spu' -// TODO @puhui999: combinationActivity.ts - export interface CombinationActivityVO { id?: number name?: string @@ -12,8 +10,8 @@ export interface CombinationActivityVO { startTime?: Date endTime?: Date userSize?: number - totalNum?: number - successNum?: number + totalCount?: number + successCount?: number orderUserCount?: number virtualGroup?: number status?: number @@ -25,7 +23,7 @@ export interface CombinationActivityVO { export interface CombinationProductVO { spuId: number skuId: number - activePrice: number // 拼团价格 + combinationPrice: number // 拼团价格 } // 扩展 Sku 配置 diff --git a/src/api/mall/promotion/coupon.ts b/src/api/mall/promotion/coupon/coupon.ts similarity index 71% rename from src/api/mall/promotion/coupon.ts rename to src/api/mall/promotion/coupon/coupon.ts index 565b86f7..2ebff5da 100755 --- a/src/api/mall/promotion/coupon.ts +++ b/src/api/mall/promotion/coupon/coupon.ts @@ -16,3 +16,11 @@ export const getCouponPage = async (params: PageParam) => { params: params }) } + +// 发送优惠券 +export const sendCoupon = async (data: any) => { + return request.post({ + url: '/promotion/coupon/send', + data: data + }) +} diff --git a/src/api/mall/promotion/couponTemplate.ts b/src/api/mall/promotion/coupon/couponTemplate.ts similarity index 98% rename from src/api/mall/promotion/couponTemplate.ts rename to src/api/mall/promotion/coupon/couponTemplate.ts index 6a58876e..243e22ee 100755 --- a/src/api/mall/promotion/couponTemplate.ts +++ b/src/api/mall/promotion/coupon/couponTemplate.ts @@ -9,7 +9,7 @@ export interface CouponTemplateVO { takeType: number usePrice: number productScope: number - productSpuIds: string + productScopeValues: number[] validityType: number validStartTime: Date validEndTime: Date diff --git a/src/api/mall/promotion/seckill/seckillConfig.ts b/src/api/mall/promotion/seckill/seckillConfig.ts index eee82115..23ad15ca 100644 --- a/src/api/mall/promotion/seckill/seckillConfig.ts +++ b/src/api/mall/promotion/seckill/seckillConfig.ts @@ -20,7 +20,7 @@ export const getSeckillConfig = async (id: number) => { } // 获得所有开启状态的秒杀时段精简列表 -export const getListAllSimple = async () => { +export const getSimpleSeckillConfigList = async () => { return await request.get({ url: '/promotion/seckill-config/list-all-simple' }) } diff --git a/src/api/mall/trade/afterSale/index.ts b/src/api/mall/trade/afterSale/index.ts new file mode 100644 index 00000000..a109ee6b --- /dev/null +++ b/src/api/mall/trade/afterSale/index.ts @@ -0,0 +1,75 @@ +import request from '@/config/axios' + +export interface TradeAfterSaleVO { + id?: number | null // 售后编号,主键自增 + no?: string // 售后单号 + status?: number | null // 退款状态 + way?: number | null // 售后方式 + type?: number | null // 售后类型 + userId?: number | null // 用户编号 + applyReason?: string // 申请原因 + applyDescription?: string // 补充描述 + applyPicUrls?: string[] // 补充凭证图片 + orderId?: number | null // 交易订单编号 + orderNo?: string // 订单流水号 + orderItemId?: number | null // 交易订单项编号 + spuId?: number | null // 商品 SPU 编号 + spuName?: string // 商品 SPU 名称 + skuId?: number | null // 商品 SKU 编号 + properties?: ProductPropertiesVO[] // 属性数组 + picUrl?: string // 商品图片 + count?: number | null // 退货商品数量 + auditTime?: Date // 审批时间 + auditUserId?: number | null // 审批人 + auditReason?: string // 审批备注 + refundPrice?: number | null // 退款金额,单位:分。 + payRefundId?: number | null // 支付退款编号 + refundTime?: Date // 退款时间 + logisticsId?: number | null // 退货物流公司编号 + logisticsNo?: string // 退货物流单号 + deliveryTime?: Date // 退货时间 + receiveTime?: Date // 收货时间 + receiveReason?: string // 收货备注 +} + +export interface ProductPropertiesVO { + propertyId?: number | null // 属性的编号 + propertyName?: string // 属性的名称 + valueId?: number | null //属性值的编号 + valueName?: string // 属性值的名称 +} + +// 获得交易售后分页 +export const getAfterSalePage = async (params) => { + return await request.get({ url: `/trade/after-sale/page`, params }) +} + +// 获得交易售后详情 +export const getAfterSale = async (id: any) => { + return await request.get({ url: `/trade/after-sale/get-detail?id=${id}` }) +} + +// 同意售后 +export const agree = async (id: any) => { + return await request.put({ url: `/trade/after-sale/agree?id=${id}` }) +} + +// 拒绝售后 +export const disagree = async (data: any) => { + return await request.put({ url: `/trade/after-sale/disagree`, data }) +} + +// 确认收货 +export const receive = async (id: any) => { + return await request.put({ url: `/trade/after-sale/receive?id=${id}` }) +} + +// 拒绝收货 +export const refuse = async (id: any) => { + return await request.put({ url: `/trade/after-sale/refuse?id=${id}` }) +} + +// 确认退款 +export const refund = async (id: any) => { + return await request.put({ url: `/trade/after-sale/refund?id=${id}` }) +} diff --git a/src/api/mall/trade/delivery/express/index.ts b/src/api/mall/trade/delivery/express/index.ts index 95429a40..0070bcd6 100644 --- a/src/api/mall/trade/delivery/express/index.ts +++ b/src/api/mall/trade/delivery/express/index.ts @@ -19,6 +19,11 @@ export const getDeliveryExpress = async (id: number) => { return await request.get({ url: '/trade/delivery/express/get?id=' + id }) } +// 获得快递公司精简信息列表 +export const getSimpleDeliveryExpressList = () => { + return request.get({ url: '/trade/delivery/express/list-all-simple' }) +} + // 新增快递公司 export const createDeliveryExpress = async (data: DeliveryExpressVO) => { return await request.post({ url: '/trade/delivery/express/create', data }) diff --git a/src/api/mall/trade/delivery/pickUpStore/index.ts b/src/api/mall/trade/delivery/pickUpStore/index.ts index 90fb3d01..82ba66c4 100644 --- a/src/api/mall/trade/delivery/pickUpStore/index.ts +++ b/src/api/mall/trade/delivery/pickUpStore/index.ts @@ -16,7 +16,7 @@ export interface DeliveryPickUpStoreVO { } // 查询自提门店列表 -export const getDeliveryPickUpStorePage = async (params: DeliveryPickUpStorePageReqVO) => { +export const getDeliveryPickUpStorePage = async (params) => { return await request.get({ url: '/trade/delivery/pick-up-store/page', params }) } @@ -25,6 +25,11 @@ export const getDeliveryPickUpStore = async (id: number) => { return await request.get({ url: '/trade/delivery/pick-up-store/get?id=' + id }) } +// 查询自提门店精简列表 +export const getListAllSimple = async () => { + return await request.get({ url: '/trade/delivery/pick-up-store/list-all-simple' }) +} + // 新增自提门店 export const createDeliveryPickUpStore = async (data: DeliveryPickUpStoreVO) => { return await request.post({ url: '/trade/delivery/pick-up-store/create', data }) @@ -39,8 +44,3 @@ export const updateDeliveryPickUpStore = async (data: DeliveryPickUpStoreVO) => export const deleteDeliveryPickUpStore = async (id: number) => { return await request.delete({ url: '/trade/delivery/pick-up-store/delete?id=' + id }) } - -// 导出自提门店 Excel -export const exportDeliveryPickUpStoreApi = async (params) => { - return await request.download({ url: '/trade/delivery/pick-up-store/export-excel', params }) -} diff --git a/src/api/mall/trade/order/index.ts b/src/api/mall/trade/order/index.ts index 9d0fab2e..d4a22944 100644 --- a/src/api/mall/trade/order/index.ts +++ b/src/api/mall/trade/order/index.ts @@ -1,12 +1,133 @@ -import request from '@/config/axios' - -// 获得交易订单分页 -// TODO @xiaobai:改成 getOrderPage -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 }) -} +import request from '@/config/axios' + +export interface OrderVO { + id?: number | null // 订单编号 + no?: string // 订单流水号 + createTime?: Date | null // 下单时间 + type?: number | null // 订单类型 + terminal?: number | null // 订单来源 + userId?: number | null // 用户编号 + userIp?: string // 用户 IP + userRemark?: string // 用户备注 + status?: number | null // 订单状态 + productCount?: number | null // 购买的商品数量 + finishTime?: Date | null // 订单完成时间 + cancelTime?: Date | null // 订单取消时间 + cancelType?: number | null // 取消类型 + remark?: string // 商家备注 + payOrderId?: number | null // 支付订单编号 + payed?: boolean // 是否已支付 + payTime?: Date | null // 付款时间 + payChannelCode?: string // 支付渠道 + totalPrice?: number | null // 商品原价(总) + orderPrice?: number | null // 订单原价(总) + discountPrice?: number | null // 订单优惠(总) + deliveryPrice?: number | null // 运费金额 + adjustPrice?: number | null // 订单调价(总) + payPrice?: number | null // 应付金额(总) + deliveryType?: number | null // 发货方式 + deliveryTemplateId?: number | null // 配送模板编号 + logisticsId?: number | null | null // 发货物流公司编号 + logisticsNo?: string // 发货物流单号 + deliveryStatus?: number | null // 发货状态 + deliveryTime?: Date | null // 发货时间 + receiveTime?: Date | null // 收货时间 + receiverName?: string // 收件人名称 + receiverMobile?: string // 收件人手机 + receiverAreaId?: number | null // 收件人地区编号 + receiverPostCode?: number | null // 收件人邮编 + receiverDetailAddress?: string // 收件人详细地址 + afterSaleStatus?: number | null // 售后状态 + refundPrice?: number | null // 退款金额 + couponId?: number | null // 优惠劵编号 + couponPrice?: number | null // 优惠劵减免金额 + pointPrice?: number | null // 积分抵扣的金额 + receiverAreaName?: string //收件人地区名字 + items?: OrderItemRespVO[] // 订单项列表 + // 用户信息 + user?: { + id?: number | null + nickname?: string + avatar?: string + } + // 订单操作日志 + orderLog: orderLog[] +} + +export interface orderLog { + content?: string + createTime?: Date +} + +export interface OrderItemRespVO { + // ========== 订单项基本信息 ========== + id?: number | null // 编号 + userId?: number | null // 用户编号 + orderId?: number | null // 订单编号 + // ========== 商品基本信息 ========== + spuId?: number | null // 商品 SPU 编号 + spuName?: string //商品 SPU 名称 + skuId?: number | null // 商品 SKU 编号 + picUrl?: string //商品图片 + count?: number | null //购买数量 + // ========== 价格 + 支付基本信息 ========== + originalPrice?: number | null //商品原价(总) + originalUnitPrice?: number | null //商品原价(单) + discountPrice?: number | null //商品优惠(总) + payPrice?: number | null //商品实付金额(总) + orderPartPrice?: number | null //子订单分摊金额(总) + orderDividePrice?: number | null //分摊后子订单实付金额(总) + // ========== 营销基本信息 ========== + // TODO 芋艿:在捉摸一下 + // ========== 售后基本信息 ========== + afterSaleStatus?: number | null // 售后状态 + properties?: ProductPropertiesVO[] //属性数组 +} + +export interface ProductPropertiesVO { + propertyId?: number | null // 属性的编号 + propertyName?: string // 属性的名称 + valueId?: number | null //属性值的编号 + valueName?: string // 属性值的名称 +} + +// 查询交易订单列表 +export const getOrderPage = async (params) => { + return await request.get({ url: `/trade/order/page`, params }) +} + +// 查询交易订单详情 +export const getOrder = async (id: number | null) => { + return await request.get({ url: `/trade/order/get-detail?id=` + id }) +} + +// 查询交易订单物流详情 +export const getExpressTrackList = async (id: number | null) => { + return await request.get({ url: `/trade/order/get-express-track-list?id=` + id }) +} + +export interface DeliveryVO { + id: number // 订单编号 + logisticsId: number | null // 物流公司编号 + logisticsNo: string // 物流编号 +} + +// 订单发货 +export const delivery = async (data: DeliveryVO) => { + return await request.put({ url: `/trade/order/delivery`, data }) +} + +// 订单备注 +export const updateRemark = async (data: any) => { + return await request.put({ url: `/trade/order/update-remark`, data }) +} + +// 订单调价 +export const updatePrice = async (data: any) => { + return await request.put({ url: `/trade/order/update-price`, data }) +} + +// 修改订单地址 +export const updateAddress = async (data: any) => { + return await request.put({ url: `/trade/order/update-address`, data }) +} diff --git a/src/api/mall/trade/order/type/orderType.ts b/src/api/mall/trade/order/type/orderType.ts deleted file mode 100644 index e5185769..00000000 --- a/src/api/mall/trade/order/type/orderType.ts +++ /dev/null @@ -1,228 +0,0 @@ -// TODO @xiaobai:这个放到 order/index.ts 里哈 -// TODO @xiaobai:注释放到变量后面,这样简洁一点 -// TODO @xiaobai:这个改成 TradeOrderRespVO -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[] - //用户信息 - user?: MemberUserRespDTO -} - -// TODO @xiaobai:这个改成 TradeOrderItemRespVO -/** - * 交易订单项 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 -} - -/** - * 订单详情查询 请求 - */ -export interface TradeOrderPageReqVO { - pageNo: number - pageSize: number - no?: string - userId?: string - userNickname?: string - userMobile?: string - receiverName?: string - receiverMobile?: string - terminal?: string - type?: number - status?: number - payChannelCode?: string - createTime?: [Date, Date] - spuName?: string - itemCount?: string - all?: string -} - -//用户信息 -export interface MemberUserRespDTO { - id?: number - nickname?: string - status?: number - avatar?: string - mobile?: string -} -//订单详情选中type -export interface SelectType { - queryParams: TradeOrderPageReqVO - selectTotal: number //选中的数量 - selectAllFlag: boolean //全选标识 - selectData: Map> //存放涉及选中得页面以及每页选中得数据订单号 全选时根据条件查询 排除取消的list订单 - unSelectList: Set //登记取消的list 全选标识为true 时登记单独取消的list,再次选中时排除, 全选标识为false 时清空list -} diff --git a/src/api/member/address/index.ts b/src/api/member/address/index.ts new file mode 100644 index 00000000..a914f979 --- /dev/null +++ b/src/api/member/address/index.ts @@ -0,0 +1,15 @@ +import request from '@/config/axios' + +export interface AddressVO { + id: number + name: string + mobile: string + areaId: number + detailAddress: string + defaultStatus: boolean +} + +// 查询用户收件地址列表 +export const getAddressList = async (params) => { + return await request.get({ url: `/member/address/list`, params }) +} diff --git a/src/api/member/group/index.ts b/src/api/member/group/index.ts new file mode 100644 index 00000000..df3054e2 --- /dev/null +++ b/src/api/member/group/index.ts @@ -0,0 +1,38 @@ +import request from '@/config/axios' + +export interface GroupVO { + id: number + name: string + remark: string + status: number +} + +// 查询用户分组列表 +export const getGroupPage = async (params: any) => { + return await request.get({ url: `/member/group/page`, params }) +} + +// 查询用户分组详情 +export const getGroup = async (id: number) => { + return await request.get({ url: `/member/group/get?id=` + id }) +} + +// 新增用户分组 +export const createGroup = async (data: GroupVO) => { + return await request.post({ url: `/member/group/create`, data }) +} + +// 查询用户分组 - 精简信息列表 +export const getSimpleGroupList = async () => { + return await request.get({ url: `/member/group/list-all-simple` }) +} + +// 修改用户分组 +export const updateGroup = async (data: GroupVO) => { + return await request.put({ url: `/member/group/update`, data }) +} + +// 删除用户分组 +export const deleteGroup = async (id: number) => { + return await request.delete({ url: `/member/group/delete?id=` + id }) +} diff --git a/src/api/member/level/index.ts b/src/api/member/level/index.ts new file mode 100644 index 00000000..0ded493a --- /dev/null +++ b/src/api/member/level/index.ts @@ -0,0 +1,42 @@ +import request from '@/config/axios' + +export interface LevelVO { + id: number + name: string + experience: number + value: number + discountPercent: number + icon: string + bgUrl: string + status: number +} + +// 查询会员等级列表 +export const getLevelList = async (params) => { + return await request.get({ url: `/member/level/list`, params }) +} + +// 查询会员等级详情 +export const getLevel = async (id: number) => { + return await request.get({ url: `/member/level/get?id=` + id }) +} + +// 查询会员等级 - 精简信息列表 +export const getSimpleLevelList = async () => { + return await request.get({ url: `/member/level/list-all-simple` }) +} + +// 新增会员等级 +export const createLevel = async (data: LevelVO) => { + return await request.post({ url: `/member/level/create`, data }) +} + +// 修改会员等级 +export const updateLevel = async (data: LevelVO) => { + return await request.put({ url: `/member/level/update`, data }) +} + +// 删除会员等级 +export const deleteLevel = async (id: number) => { + return await request.delete({ url: `/member/level/delete?id=` + id }) +} diff --git a/src/api/point/config/index.ts b/src/api/member/point/config/index.ts similarity index 72% rename from src/api/point/config/index.ts rename to src/api/member/point/config/index.ts index 00adc3f1..9a3c4c48 100644 --- a/src/api/point/config/index.ts +++ b/src/api/member/point/config/index.ts @@ -10,10 +10,10 @@ export interface ConfigVO { // 查询积分设置详情 export const getConfig = async () => { - return await request.get({ url: `/point/config/get` }) + return await request.get({ url: `/member/point/config/get` }) } // 新增修改积分设置 export const saveConfig = async (data: ConfigVO) => { - return await request.put({ url: `/point/config/save`, data }) + return await request.put({ url: `/member/point/config/save`, data }) } diff --git a/src/api/member/point/record/index.ts b/src/api/member/point/record/index.ts new file mode 100644 index 00000000..f47ae467 --- /dev/null +++ b/src/api/member/point/record/index.ts @@ -0,0 +1,18 @@ +import request from '@/config/axios' + +export interface RecordVO { + id: number + bizId: string + bizType: string + title: string + description: string + point: number + totalPoint: number + userId: number + createDate: Date +} + +// 查询用户积分记录列表 +export const getRecordPage = async (params) => { + return await request.get({ url: `/member/point/record/page`, params }) +} diff --git a/src/api/member/signin/config/index.ts b/src/api/member/signin/config/index.ts new file mode 100644 index 00000000..558bdc70 --- /dev/null +++ b/src/api/member/signin/config/index.ts @@ -0,0 +1,33 @@ +import request from '@/config/axios' + +export interface SignInConfigVO { + id: number + day: number | null + point: number | null + enable: boolean | null +} + +// 查询积分签到规则列表 +export const getSignInConfigList = async () => { + return await request.get({ url: `/member/sign-in/config/list` }) +} + +// 查询积分签到规则详情 +export const getSignInConfig = async (id: number) => { + return await request.get({ url: `/member/sign-in/config/get?id=` + id }) +} + +// 新增积分签到规则 +export const createSignInConfig = async (data: SignInConfigVO) => { + return await request.post({ url: `/member/sign-in/config/create`, data }) +} + +// 修改积分签到规则 +export const updateSignInConfig = async (data: SignInConfigVO) => { + return await request.put({ url: `/member/sign-in/config/update`, data }) +} + +// 删除积分签到规则 +export const deleteSignInConfig = async (id: number) => { + return await request.delete({ url: `/member/sign-in/config/delete?id=` + id }) +} diff --git a/src/api/member/signin/record/index.ts b/src/api/member/signin/record/index.ts new file mode 100644 index 00000000..7d137029 --- /dev/null +++ b/src/api/member/signin/record/index.ts @@ -0,0 +1,13 @@ +import request from '@/config/axios' + +export interface SignInRecordVO { + id: number + userId: number + day: number + point: number +} + +// 查询用户签到积分列表 +export const getSignInRecordPage = async (params) => { + return await request.get({ url: `/member/sign-in/record/page`, params }) +} diff --git a/src/api/member/tag/index.ts b/src/api/member/tag/index.ts new file mode 100644 index 00000000..7ff6e9bf --- /dev/null +++ b/src/api/member/tag/index.ts @@ -0,0 +1,36 @@ +import request from '@/config/axios' + +export interface TagVO { + id: number + name: string +} + +// 查询会员标签列表 +export const getMemberTagPage = async (params: any) => { + return await request.get({ url: `/member/tag/page`, params }) +} + +// 查询会员标签详情 +export const getMemberTag = async (id: number) => { + return await request.get({ url: `/member/tag/get?id=` + id }) +} + +// 查询会员标签 - 精简信息列表 +export const getSimpleTagList = async () => { + return await request.get({ url: `/member/tag/list-all-simple` }) +} + +// 新增会员标签 +export const createMemberTag = async (data: TagVO) => { + return await request.post({ url: `/member/tag/create`, data }) +} + +// 修改会员标签 +export const updateMemberTag = async (data: TagVO) => { + return await request.put({ url: `/member/tag/update`, data }) +} + +// 删除会员标签 +export const deleteMemberTag = async (id: number) => { + return await request.delete({ url: `/member/tag/delete?id=` + id }) +} diff --git a/src/api/member/user/index.ts b/src/api/member/user/index.ts new file mode 100644 index 00000000..4d60988c --- /dev/null +++ b/src/api/member/user/index.ts @@ -0,0 +1,43 @@ +import request from '@/config/axios' + +export interface UserVO { + id: number + avatar: string | undefined + birthday: number | undefined + createTime: number | undefined + loginDate: number | undefined + loginIp: string + mark: string + mobile: string + name: string | undefined + nickname: string | undefined + registerIp: string + sex: number + status: number + areaId: number | undefined + areaName: string | undefined + levelName: string | null + point: number | undefined | null + totalPoint: number | undefined | null + experience: number | null | undefined +} + +// 查询会员用户列表 +export const getUserPage = async (params) => { + return await request.get({ url: `/member/user/page`, params }) +} + +// 查询会员用户详情 +export const getUser = async (id: number) => { + return await request.get({ url: `/member/user/get?id=` + id }) +} + +// 修改会员用户 +export const updateUser = async (data: UserVO) => { + return await request.put({ url: `/member/user/update`, data }) +} + +// 修改会员用户等级 +export const updateUserLevel = async (data: any) => { + return await request.put({ url: `/member/user/update-level`, data }) +} diff --git a/src/api/pay/app/index.ts b/src/api/pay/app/index.ts index 348185c8..4bb06b36 100644 --- a/src/api/pay/app/index.ts +++ b/src/api/pay/app/index.ts @@ -22,57 +22,44 @@ export interface AppPageReqVO extends PageParam { createTime?: Date[] } -export interface AppExportReqVO { - name?: string - status?: number - remark?: string - payNotifyUrl?: string - refundNotifyUrl?: string - merchantName?: string - createTime?: Date[] -} - export interface AppUpdateStatusReqVO { id: number status: number } // 查询列表支付应用 -export const getAppPageApi = (params: AppPageReqVO) => { +export const getAppPage = (params: AppPageReqVO) => { return request.get({ url: '/pay/app/page', params }) } // 查询详情支付应用 -export const getAppApi = (id: number) => { +export const getApp = (id: number) => { return request.get({ url: '/pay/app/get?id=' + id }) } // 新增支付应用 -export const createAppApi = (data: AppVO) => { +export const createApp = (data: AppVO) => { return request.post({ url: '/pay/app/create', data }) } // 修改支付应用 -export const updateAppApi = (data: AppVO) => { +export const updateApp = (data: AppVO) => { return request.put({ url: '/pay/app/update', data }) } // 支付应用信息状态修改 -export const changeAppStatusApi = (data: AppUpdateStatusReqVO) => { +export const changeAppStatus = (data: AppUpdateStatusReqVO) => { return request.put({ url: '/pay/app/update-status', data: data }) } // 删除支付应用 -export const deleteAppApi = (id: number) => { +export const deleteApp = (id: number) => { return request.delete({ url: '/pay/app/delete?id=' + id }) } -// 导出支付应用 -export const exportAppApi = (params: AppExportReqVO) => { - return request.download({ url: '/pay/app/export-excel', params }) -} - -// 根据商ID称搜索应用列表 -export const getAppListByMerchantIdApi = (merchantId: number) => { - return request.get({ url: '/pay/app/list-merchant-id', params: { merchantId: merchantId } }) +// 获得支付应用列表 +export const getAppList = () => { + return request.get({ + url: '/pay/app/list' + }) } diff --git a/src/api/pay/channel/index.ts b/src/api/pay/channel/index.ts index a6da9eb8..0f4ff424 100644 --- a/src/api/pay/channel/index.ts +++ b/src/api/pay/channel/index.ts @@ -7,64 +7,40 @@ export interface ChannelVO { status: number remark: string feeRate: number - merchantId: number appId: number createTime: Date } -export interface ChannelPageReqVO extends PageParam { - code?: string - status?: number - remark?: string - feeRate?: number - merchantId?: number - appId?: number - config?: string - createTime?: Date[] -} - -export interface ChannelExportReqVO { - code?: string - status?: number - remark?: string - feeRate?: number - merchantId?: number - appId?: number - config?: string - createTime?: Date[] -} - // 查询列表支付渠道 -export const getChannelPageApi = (params: ChannelPageReqVO) => { +export const getChannelPage = (params: PageParam) => { return request.get({ url: '/pay/channel/page', params }) } // 查询详情支付渠道 -export const getChannelApi = (merchantId: number, appId: string, code: string) => { +export const getChannel = (appId: string, code: string) => { const params = { - merchantId: merchantId, appId: appId, code: code } - return request.get({ url: '/pay/channel/get-channel', params: params }) + return request.get({ url: '/pay/channel/get', params: params }) } // 新增支付渠道 -export const createChannelApi = (data: ChannelVO) => { +export const createChannel = (data: ChannelVO) => { return request.post({ url: '/pay/channel/create', data }) } // 修改支付渠道 -export const updateChannelApi = (data: ChannelVO) => { +export const updateChannel = (data: ChannelVO) => { return request.put({ url: '/pay/channel/update', data }) } // 删除支付渠道 -export const deleteChannelApi = (id: number) => { +export const deleteChannel = (id: number) => { return request.delete({ url: '/pay/channel/delete?id=' + id }) } // 导出支付渠道 -export const exportChannelApi = (params: ChannelExportReqVO) => { +export const exportChannel = (params) => { return request.download({ url: '/pay/channel/export-excel', params }) } diff --git a/src/api/pay/demo/index.ts b/src/api/pay/demo/index.ts new file mode 100644 index 00000000..3824a8b2 --- /dev/null +++ b/src/api/pay/demo/index.ts @@ -0,0 +1,36 @@ +import request from '@/config/axios' + +export interface DemoOrderVO { + spuId: number + createTime: Date +} + +// 创建示例订单 +export function createDemoOrder(data: DemoOrderVO) { + return request.post({ + url: '/pay/demo-order/create', + data: data + }) +} + +// 获得示例订单 +export function getDemoOrder(id: number) { + return request.get({ + url: '/pay/demo-order/get?id=' + id + }) +} + +// 获得示例订单分页 +export function getDemoOrderPage(query: PageParam) { + return request.get({ + url: '/pay/demo-order/page', + params: query + }) +} + +// 退款示例订单 +export function refundDemoOrder(id) { + return request.put({ + url: '/pay/demo-order/refund?id=' + id + }) +} diff --git a/src/api/pay/merchant/index.ts b/src/api/pay/merchant/index.ts deleted file mode 100644 index 87107396..00000000 --- a/src/api/pay/merchant/index.ts +++ /dev/null @@ -1,78 +0,0 @@ -import request from '@/config/axios' - -export interface MerchantVO { - id: number - no: string - name: string - shortName: string - status: number - remark: string - createTime: Date -} - -export interface MerchantPageReqVO extends PageParam { - no?: string - name?: string - shortName?: string - status?: number - remark?: string - createTime?: Date[] -} - -export interface MerchantExportReqVO { - no?: string - name?: string - shortName?: string - status?: number - remark?: string - createTime?: Date[] -} - -// 查询列表支付商户 -export const getMerchantPageApi = (params: MerchantPageReqVO) => { - return request.get({ url: '/pay/merchant/page', params }) -} - -// 查询详情支付商户 -export const getMerchantApi = (id: number) => { - return request.get({ url: '/pay/merchant/get?id=' + id }) -} - -// 根据商户名称搜索商户列表 -export const getMerchantListByNameApi = (name?: string) => { - return request.get({ - url: '/pay/merchant/list-by-name', - params: { - name: name - } - }) -} - -// 新增支付商户 -export const createMerchantApi = (data: MerchantVO) => { - return request.post({ url: '/pay/merchant/create', data }) -} - -// 修改支付商户 -export const updateMerchantApi = (data: MerchantVO) => { - return request.put({ url: '/pay/merchant/update', data }) -} - -// 删除支付商户 -export const deleteMerchantApi = (id: number) => { - return request.delete({ url: '/pay/merchant/delete?id=' + id }) -} - -// 导出支付商户 -export const exportMerchantApi = (params: MerchantExportReqVO) => { - return request.download({ url: '/pay/merchant/export-excel', params }) -} - -// 支付商户状态修改 -export const changeMerchantStatusApi = (id: number, status: number) => { - const data = { - id, - status - } - return request.put({ url: '/pay/merchant/update-status', data: data }) -} diff --git a/src/api/pay/notify/index.ts b/src/api/pay/notify/index.ts new file mode 100644 index 00000000..dc8bd887 --- /dev/null +++ b/src/api/pay/notify/index.ts @@ -0,0 +1,16 @@ +import request from '@/config/axios' + +// 获得支付通知明细 +export const getNotifyTaskDetail = (id) => { + return request.get({ + url: '/pay/notify/get-detail?id=' + id + }) +} + +// 获得支付通知分页 +export const getNotifyTaskPage = (query) => { + return request.get({ + url: '/pay/notify/page', + params: query + }) +} diff --git a/src/api/pay/order/index.ts b/src/api/pay/order/index.ts index 39116211..71960a8a 100644 --- a/src/api/pay/order/index.ts +++ b/src/api/pay/order/index.ts @@ -79,36 +79,26 @@ export interface OrderExportReqVO { } // 查询列表支付订单 -export const getOrderPageApi = async (params: OrderPageReqVO) => { +export const getOrderPage = async (params: OrderPageReqVO) => { return await request.get({ url: '/pay/order/page', params }) } // 查询详情支付订单 -export const getOrderApi = async (id: number) => { +export const getOrder = async (id: number) => { return await request.get({ url: '/pay/order/get?id=' + id }) } // 获得支付订单的明细 -export const getOrderDetailApi = async (id: number) => { +export const getOrderDetail = async (id: number) => { return await request.get({ url: '/pay/order/get-detail?id=' + id }) } -// 新增支付订单 -export const createOrderApi = async (data: OrderVO) => { - return await request.post({ url: '/pay/order/create', data }) -} - -// 修改支付订单 -export const updateOrderApi = async (data: OrderVO) => { - return await request.put({ url: '/pay/order/update', data }) -} - -// 删除支付订单 -export const deleteOrderApi = async (id: number) => { - return await request.delete({ url: '/pay/order/delete?id=' + id }) +// 提交支付订单 +export const submitOrder = async (data: any) => { + return await request.post({ url: '/pay/order/submit', data }) } // 导出支付订单 -export const exportOrderApi = async (params: OrderExportReqVO) => { +export const exportOrder = async (params: OrderExportReqVO) => { return await request.download({ url: '/pay/order/export-excel', params }) } diff --git a/src/api/pay/refund/index.ts b/src/api/pay/refund/index.ts index cd68a144..4b587f22 100644 --- a/src/api/pay/refund/index.ts +++ b/src/api/pay/refund/index.ts @@ -86,31 +86,31 @@ export interface PayRefundExportReqVO { } // 查询列表退款订单 -export const getRefundPageApi = (params: RefundPageReqVO) => { +export const getRefundPage = (params: RefundPageReqVO) => { return request.get({ url: '/pay/refund/page', params }) } // 查询详情退款订单 -export const getRefundApi = (id: number) => { +export const getRefund = (id: number) => { return request.get({ url: '/pay/refund/get?id=' + id }) } // 新增退款订单 -export const createRefundApi = (data: RefundVO) => { +export const createRefund = (data: RefundVO) => { return request.post({ url: '/pay/refund/create', data }) } // 修改退款订单 -export const updateRefundApi = (data: RefundVO) => { +export const updateRefund = (data: RefundVO) => { return request.put({ url: '/pay/refund/update', data }) } // 删除退款订单 -export const deleteRefundApi = (id: number) => { +export const deleteRefund = (id: number) => { return request.delete({ url: '/pay/refund/delete?id=' + id }) } // 导出退款订单 -export const exportRefundApi = (params: PayRefundExportReqVO) => { +export const exportRefund = (params: PayRefundExportReqVO) => { return request.download({ url: '/pay/refund/export-excel', params }) } diff --git a/src/api/point/record/index.ts b/src/api/point/record/index.ts deleted file mode 100644 index 15eaff35..00000000 --- a/src/api/point/record/index.ts +++ /dev/null @@ -1,47 +0,0 @@ -import request from '@/config/axios' - -export interface RecordVO { - id: number - bizId: string - bizType: string - type: string - title: string - description: string - point: number - totalPoint: number - status: number - userId: number - freezingTime: Date - thawingTime: Date - createDate: Date -} - -// 查询用户积分记录列表 -export const getRecordPage = async (params) => { - return await request.get({ url: `/point/record/page`, params }) -} - -// 查询用户积分记录详情 -export const getRecord = async (id: number) => { - return await request.get({ url: `/point/record/get?id=` + id }) -} - -// 新增用户积分记录 -export const createRecord = async (data: RecordVO) => { - return await request.post({ url: `/point/record/create`, data }) -} - -// 修改用户积分记录 -export const updateRecord = async (data: RecordVO) => { - return await request.put({ url: `/point/record/update`, data }) -} - -// 删除用户积分记录 -export const deleteRecord = async (id: number) => { - return await request.delete({ url: `/point/record/delete?id=` + id }) -} - -// 导出用户积分记录 Excel -export const exportRecord = async (params) => { - return await request.download({ url: `/point/record/export-excel`, params }) -} diff --git a/src/api/point/signInConfig/index.ts b/src/api/point/signInConfig/index.ts deleted file mode 100644 index 3786c06e..00000000 --- a/src/api/point/signInConfig/index.ts +++ /dev/null @@ -1,37 +0,0 @@ -import request from '@/config/axios' - -export interface SignInConfigVO { - id: number - day: number - point: number -} - -// 查询积分签到规则列表 -export const getSignInConfigPage = async (params) => { - return await request.get({ url: `/point/sign-in-config/page`, params }) -} - -// 查询积分签到规则详情 -export const getSignInConfig = async (id: number) => { - return await request.get({ url: `/point/sign-in-config/get?id=` + id }) -} - -// 新增积分签到规则 -export const createSignInConfig = async (data: SignInConfigVO) => { - return await request.post({ url: `/point/sign-in-config/create`, data }) -} - -// 修改积分签到规则 -export const updateSignInConfig = async (data: SignInConfigVO) => { - return await request.put({ url: `/point/sign-in-config/update`, data }) -} - -// 删除积分签到规则 -export const deleteSignInConfig = async (id: number) => { - return await request.delete({ url: `/point/sign-in-config/delete?id=` + id }) -} - -// 导出积分签到规则 Excel -export const exportSignInConfig = async (params) => { - return await request.download({ url: `/point/sign-in-config/export-excel`, params }) -} diff --git a/src/api/point/signInRecord/index.ts b/src/api/point/signInRecord/index.ts deleted file mode 100644 index 0f9b9f64..00000000 --- a/src/api/point/signInRecord/index.ts +++ /dev/null @@ -1,38 +0,0 @@ -import request from '@/config/axios' - -export interface SignInRecordVO { - id: number - userId: number - day: number - point: number -} - -// 查询用户签到积分列表 -export const getSignInRecordPage = async (params) => { - return await request.get({ url: `/point/sign-in-record/page`, params }) -} - -// 查询用户签到积分详情 -export const getSignInRecord = async (id: number) => { - return await request.get({ url: `/point/sign-in-record/get?id=` + id }) -} - -// 新增用户签到积分 -export const createSignInRecord = async (data: SignInRecordVO) => { - return await request.post({ url: `/point/sign-in-record/create`, data }) -} - -// 修改用户签到积分 -export const updateSignInRecord = async (data: SignInRecordVO) => { - return await request.put({ url: `/point/sign-in-record/update`, data }) -} - -// 删除用户签到积分 -export const deleteSignInRecord = async (id: number) => { - return await request.delete({ url: `/point/sign-in-record/delete?id=` + id }) -} - -// 导出用户签到积分 Excel -export const exportSignInRecord = async (params) => { - return await request.download({ url: `/point/sign-in-record/export-excel`, params }) -} diff --git a/src/api/system/permission/index.ts b/src/api/system/permission/index.ts index aa355dfc..814e71b0 100644 --- a/src/api/system/permission/index.ts +++ b/src/api/system/permission/index.ts @@ -18,7 +18,7 @@ export interface PermissionAssignRoleDataScopeReqVO { // 查询角色拥有的菜单权限 export const listRoleMenusApi = async (roleId: number) => { - return await request.get({ url: '/system/permission/list-role-resources?roleId=' + roleId }) + return await request.get({ url: '/system/permission/list-role-menus?roleId=' + roleId }) } // 赋予角色菜单权限 diff --git a/src/assets/svgs/member_balance.svg b/src/assets/svgs/member_balance.svg new file mode 100644 index 00000000..5395b236 --- /dev/null +++ b/src/assets/svgs/member_balance.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svgs/member_expenditure_balance.svg b/src/assets/svgs/member_expenditure_balance.svg new file mode 100644 index 00000000..02d498cd --- /dev/null +++ b/src/assets/svgs/member_expenditure_balance.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svgs/member_level.svg b/src/assets/svgs/member_level.svg new file mode 100644 index 00000000..cbcc686d --- /dev/null +++ b/src/assets/svgs/member_level.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svgs/member_point.svg b/src/assets/svgs/member_point.svg new file mode 100644 index 00000000..b849ddb4 --- /dev/null +++ b/src/assets/svgs/member_point.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svgs/member_recharge_balance.svg b/src/assets/svgs/member_recharge_balance.svg new file mode 100644 index 00000000..7519bb23 --- /dev/null +++ b/src/assets/svgs/member_recharge_balance.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svgs/pay/icon/alipay_app.svg b/src/assets/svgs/pay/icon/alipay_app.svg new file mode 100644 index 00000000..ebf11883 --- /dev/null +++ b/src/assets/svgs/pay/icon/alipay_app.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svgs/pay/icon/alipay_bar.svg b/src/assets/svgs/pay/icon/alipay_bar.svg new file mode 100644 index 00000000..eb1e1e84 --- /dev/null +++ b/src/assets/svgs/pay/icon/alipay_bar.svg @@ -0,0 +1,2 @@ + diff --git a/src/assets/svgs/pay/icon/alipay_pc.svg b/src/assets/svgs/pay/icon/alipay_pc.svg new file mode 100644 index 00000000..2a752770 --- /dev/null +++ b/src/assets/svgs/pay/icon/alipay_pc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svgs/pay/icon/alipay_qr.svg b/src/assets/svgs/pay/icon/alipay_qr.svg new file mode 100644 index 00000000..48337508 --- /dev/null +++ b/src/assets/svgs/pay/icon/alipay_qr.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/src/assets/svgs/pay/icon/alipay_wap.svg b/src/assets/svgs/pay/icon/alipay_wap.svg new file mode 100644 index 00000000..87075dbb --- /dev/null +++ b/src/assets/svgs/pay/icon/alipay_wap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svgs/pay/icon/mock.svg b/src/assets/svgs/pay/icon/mock.svg new file mode 100644 index 00000000..27b09ead --- /dev/null +++ b/src/assets/svgs/pay/icon/mock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svgs/pay/icon/wx_app.svg b/src/assets/svgs/pay/icon/wx_app.svg new file mode 100644 index 00000000..ad40b2a2 --- /dev/null +++ b/src/assets/svgs/pay/icon/wx_app.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/src/assets/svgs/pay/icon/wx_bar.svg b/src/assets/svgs/pay/icon/wx_bar.svg new file mode 100644 index 00000000..11292e6e --- /dev/null +++ b/src/assets/svgs/pay/icon/wx_bar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svgs/pay/icon/wx_lite.svg b/src/assets/svgs/pay/icon/wx_lite.svg new file mode 100644 index 00000000..0c925cf3 --- /dev/null +++ b/src/assets/svgs/pay/icon/wx_lite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svgs/pay/icon/wx_native.svg b/src/assets/svgs/pay/icon/wx_native.svg new file mode 100644 index 00000000..bf3ba2b6 --- /dev/null +++ b/src/assets/svgs/pay/icon/wx_native.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/svgs/pay/icon/wx_pub.svg b/src/assets/svgs/pay/icon/wx_pub.svg new file mode 100644 index 00000000..3a6d15b7 --- /dev/null +++ b/src/assets/svgs/pay/icon/wx_pub.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/src/components/Card/index.ts b/src/components/Card/index.ts new file mode 100644 index 00000000..f4c0d86c --- /dev/null +++ b/src/components/Card/index.ts @@ -0,0 +1,3 @@ +import CardTitle from './src/CardTitle.vue' + +export { CardTitle } diff --git a/src/components/Card/src/CardTitle.vue b/src/components/Card/src/CardTitle.vue new file mode 100644 index 00000000..5b122f49 --- /dev/null +++ b/src/components/Card/src/CardTitle.vue @@ -0,0 +1,37 @@ + + + + + diff --git a/src/components/ContentDetailWrap/src/ContentDetailWrap.vue b/src/components/ContentDetailWrap/src/ContentDetailWrap.vue index 9469a552..a4f510b8 100644 --- a/src/components/ContentDetailWrap/src/ContentDetailWrap.vue +++ b/src/components/ContentDetailWrap/src/ContentDetailWrap.vue @@ -26,7 +26,7 @@ onMounted(() => {
diff --git a/src/components/Cropper/src/CopperModal.vue b/src/components/Cropper/src/CopperModal.vue index c303b58c..37b90452 100644 --- a/src/components/Cropper/src/CopperModal.vue +++ b/src/components/Cropper/src/CopperModal.vue @@ -220,7 +220,9 @@ $prefix-cls: #{$namespace}-cropper-am; transparent 75%, rgb(0 0 0 / 25%) 0 ); - background-position: 0 0, 12px 12px; + background-position: + 0 0, + 12px 12px; background-size: 24px 24px; } diff --git a/src/components/Cropper/src/CropperAvatar.vue b/src/components/Cropper/src/CropperAvatar.vue index e88036dd..7ecdb7f6 100644 --- a/src/components/Cropper/src/CropperAvatar.vue +++ b/src/components/Cropper/src/CropperAvatar.vue @@ -1,7 +1,7 @@