From fb90a85e43aca87705699425409e5bc2a3e6d659 Mon Sep 17 00:00:00 2001 From: "913752709@qq.com" <913752709@qq.com> Date: Sat, 21 Oct 2023 00:53:32 +0800 Subject: [PATCH 01/18] =?UTF-8?q?feat:=20crm=20=E7=BA=BF=E7=B4=A2=E8=A1=A8?= =?UTF-8?q?=E5=AE=8C=E5=96=84=20review=20=E6=8F=90=E5=88=B0=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/crm/clue/ClueForm.vue | 30 +--------- src/views/crm/clue/index.vue | 100 +------------------------------- 2 files changed, 2 insertions(+), 128 deletions(-) diff --git a/src/views/crm/clue/ClueForm.vue b/src/views/crm/clue/ClueForm.vue index e72e4228..877b26d9 100644 --- a/src/views/crm/clue/ClueForm.vue +++ b/src/views/crm/clue/ClueForm.vue @@ -7,28 +7,6 @@ label-width="100px" v-loading="formLoading" > - - - - {{ dict.label }} - - - - - - - {{ dict.label }} - - - @@ -80,8 +58,6 @@ const formLoading = ref(false) // 表单的加载中:1)修改时的数据加 const formType = ref('') // 表单的类型:create - 新增;update - 修改 const formData = ref({ id: undefined, - transformStatus: undefined, - followUpStatus: undefined, name: undefined, customerId: undefined, contactNextTime: undefined, @@ -93,10 +69,8 @@ const formData = ref({ remark: undefined }) const formRules = reactive({ - transformStatus: [{ required: true, message: '转化状态不能为空', trigger: 'blur' }], - followUpStatus: [{ required: true, message: '跟进状态不能为空', trigger: 'blur' }], name: [{ required: true, message: '线索名称不能为空', trigger: 'blur' }], - customerId: [{ required: true, message: '客户id不能为空', trigger: 'blur' }] + customerId: [{ required: true, message: '客户不能为空', trigger: 'blur' }] }) const formRef = ref() // 表单 Ref @@ -148,8 +122,6 @@ const submitForm = async () => { const resetForm = () => { formData.value = { id: undefined, - transformStatus: undefined, - followUpStatus: undefined, name: undefined, customerId: undefined, contactNextTime: undefined, diff --git a/src/views/crm/clue/index.vue b/src/views/crm/clue/index.vue index 42f20545..e866a725 100644 --- a/src/views/crm/clue/index.vue +++ b/src/views/crm/clue/index.vue @@ -8,36 +8,6 @@ :inline="true" label-width="68px" > - - - - - - - - - - - - - - - - - - - - - - - - - - - - 搜索 重置 @@ -238,17 +148,9 @@ const list = ref([]) // 列表的数据 const queryParams = reactive({ pageNo: 1, pageSize: 10, - transformStatus: null, - followUpStatus: null, name: null, - customerId: null, - contactNextTime: [], telephone: null, - mobile: null, - address: null, - ownerUserId: null, - contactLastTime: [], - createTime: [] + mobile: null }) const queryFormRef = ref() // 搜索的表单 const exportLoading = ref(false) // 导出的加载中 From 539352f598503dfe35f04c66ba9f0cfb7ea482e3 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Tue, 24 Oct 2023 20:29:23 +0800 Subject: [PATCH 02/18] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20banner=20=E8=BF=94?= =?UTF-8?q?=E5=9B=9E=E5=AD=97=E6=AE=B5=E4=B8=8D=E5=AF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/mall/promotion/banner/BannerForm.vue | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/views/mall/promotion/banner/BannerForm.vue b/src/views/mall/promotion/banner/BannerForm.vue index 687f26a8..03bca0f9 100644 --- a/src/views/mall/promotion/banner/BannerForm.vue +++ b/src/views/mall/promotion/banner/BannerForm.vue @@ -9,12 +9,12 @@ > - - + + - + @@ -42,7 +42,7 @@ - + Date: Tue, 24 Oct 2023 21:07:51 +0800 Subject: [PATCH 03/18] =?UTF-8?q?1.8.3=20=E7=89=88=E6=9C=AC=E5=8F=91?= =?UTF-8?q?=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e81fe550..4922715c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "yudao-ui-admin-vue3", - "version": "1.8.2-snapshot", + "version": "1.8.3-snapshot", "description": "基于vue3、vite4、element-plus、typesScript", "author": "xingyu", "private": false, From 044754cdb4cd78543ce9550d8b45923dd82ef8bf Mon Sep 17 00:00:00 2001 From: Wanwan <913752709@qq.com> Date: Wed, 25 Oct 2023 00:24:20 +0800 Subject: [PATCH 04/18] =?UTF-8?q?feat:=20=E5=AE=A2=E6=88=B7=E8=A1=A8?= =?UTF-8?q?=E7=9A=84=20crud?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/crm/customer/index.ts | 51 +++++ src/views/crm/customer/CustomerForm.vue | 195 +++++++++++++++++++ src/views/crm/customer/index.vue | 238 ++++++++++++++++++++++++ 3 files changed, 484 insertions(+) create mode 100644 src/api/crm/customer/index.ts create mode 100644 src/views/crm/customer/CustomerForm.vue create mode 100644 src/views/crm/customer/index.vue diff --git a/src/api/crm/customer/index.ts b/src/api/crm/customer/index.ts new file mode 100644 index 00000000..16ccb355 --- /dev/null +++ b/src/api/crm/customer/index.ts @@ -0,0 +1,51 @@ +import request from '@/config/axios' + +export interface CustomerVO { + id: number + name: string + followUpStatus: boolean + lockStatus: boolean + mobile: string + telephone: string + website: string + remark: string + ownerUserId: number + roUserIds: string + rwUserIds: string + areaId: number + detailAddress: string + longitude: string + latitude: string + contactLastTime: Date + contactNextTime: Date +} + +// 查询客户列表 +export const getCustomerPage = async (params) => { + return await request.get({ url: `/crm/customer/page`, params }) +} + +// 查询客户详情 +export const getCustomer = async (id: number) => { + return await request.get({ url: `/crm/customer/get?id=` + id }) +} + +// 新增客户 +export const createCustomer = async (data: CustomerVO) => { + return await request.post({ url: `/crm/customer/create`, data }) +} + +// 修改客户 +export const updateCustomer = async (data: CustomerVO) => { + return await request.put({ url: `/crm/customer/update`, data }) +} + +// 删除客户 +export const deleteCustomer = async (id: number) => { + return await request.delete({ url: `/crm/customer/delete?id=` + id }) +} + +// 导出客户 Excel +export const exportCustomer = async (params) => { + return await request.download({ url: `/crm/customer/export-excel`, params }) +} diff --git a/src/views/crm/customer/CustomerForm.vue b/src/views/crm/customer/CustomerForm.vue new file mode 100644 index 00000000..52ff923a --- /dev/null +++ b/src/views/crm/customer/CustomerForm.vue @@ -0,0 +1,195 @@ + + diff --git a/src/views/crm/customer/index.vue b/src/views/crm/customer/index.vue new file mode 100644 index 00000000..15a0d144 --- /dev/null +++ b/src/views/crm/customer/index.vue @@ -0,0 +1,238 @@ + + + From b8403c1b90deb364632f043d2692f7064706f667 Mon Sep 17 00:00:00 2001 From: xingyu Date: Wed, 25 Oct 2023 10:34:54 +0800 Subject: [PATCH 05/18] chore: update vue v3.3.7 --- package.json | 54 ++++++++++++++++++++++++++-------------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/package.json b/package.json index 4922715c..1928bf5e 100644 --- a/package.json +++ b/package.json @@ -41,12 +41,12 @@ "bpmn-js-token-simulation": "^0.10.0", "camunda-bpmn-moddle": "^7.0.1", "cropperjs": "^1.6.1", - "crypto-js": "^4.1.1", + "crypto-js": "^4.2.0", "dayjs": "^1.11.10", - "diagram-js": "^12.4.0", + "diagram-js": "^12.5.0", "echarts": "^5.4.3", "echarts-wordcloud": "^2.1.0", - "element-plus": "2.4.0", + "element-plus": "2.4.1", "fast-xml-parser": "^4.3.2", "highlight.js": "^11.9.0", "intro.js": "^7.2.0", @@ -62,7 +62,7 @@ "steady-xml": "^0.1.0", "url": "^0.11.3", "video.js": "^7.21.5", - "vue": "^3.3.4", + "vue": "^3.3.7", "vue-dompurify-html": "^4.1.4", "vue-i18n": "^9.5.0", "vue-router": "^4.2.5", @@ -72,55 +72,55 @@ "xml-js": "^1.6.11" }, "devDependencies": { - "@commitlint/cli": "^17.8.0", - "@commitlint/config-conventional": "^17.8.0", - "@iconify/json": "^2.2.129", + "@commitlint/cli": "^18.0.0", + "@commitlint/config-conventional": "^18.0.0", + "@iconify/json": "^2.2.132", "@intlify/unplugin-vue-i18n": "^1.4.0", "@purge-icons/generated": "^0.9.0", - "@types/intro.js": "^5.1.2", - "@types/lodash-es": "^4.17.9", - "@types/node": "^20.8.6", - "@types/nprogress": "^0.2.1", - "@types/qrcode": "^1.5.2", - "@types/qs": "^6.9.8", + "@types/intro.js": "^5.1.3", + "@types/lodash-es": "^4.17.10", + "@types/node": "^20.8.8", + "@types/nprogress": "^0.2.2", + "@types/qrcode": "^1.5.4", + "@types/qs": "^6.9.9", "@types/sortablejs": "^1.15.4", - "@typescript-eslint/eslint-plugin": "^6.7.5", - "@typescript-eslint/parser": "^6.7.5", - "@unocss/transformer-variant-group": "^0.56.5", - "@unocss/eslint-config": "^0.56.5", + "@typescript-eslint/eslint-plugin": "^6.9.0", + "@typescript-eslint/parser": "^6.9.0", + "@unocss/transformer-variant-group": "^0.57.1", + "@unocss/eslint-config": "^0.57.1", "@vitejs/plugin-legacy": "^4.1.1", "@vitejs/plugin-vue": "^4.4.0", "@vitejs/plugin-vue-jsx": "^3.0.2", - "@vue-macros/volar": "^0.17.0", + "@vue-macros/volar": "^0.17.1", "autoprefixer": "^10.4.16", "bpmn-js": "8.9.0", "bpmn-js-properties-panel": "0.46.0", "consola": "^3.2.3", - "eslint": "^8.51.0", + "eslint": "^8.52.0", "eslint-config-prettier": "^9.0.0", "eslint-define-config": "^1.24.1", "eslint-plugin-prettier": "^5.0.1", - "eslint-plugin-vue": "^9.17.0", - "lint-staged": "^15.0.1", + "eslint-plugin-vue": "^9.18.0", + "lint-staged": "^15.0.2", "postcss": "^8.4.31", "postcss-html": "^1.5.0", "postcss-scss": "^4.0.9", "prettier": "^3.0.3", "rimraf": "^5.0.5", "rollup": "^4.1.4", - "sass": "^1.69.3", - "stylelint": "^15.10.3", + "sass": "^1.69.4", + "stylelint": "^15.11.0", "stylelint-config-html": "^1.1.0", "stylelint-config-recommended": "^13.0.0", "stylelint-config-standard": "^34.0.0", "stylelint-order": "^6.0.3", - "terser": "^5.21.0", + "terser": "^5.22.0", "typescript": "5.2.2", - "unocss": "^0.56.5", + "unocss": "^0.57.1", "unplugin-auto-import": "^0.16.6", "unplugin-element-plus": "^0.8.0", "unplugin-vue-components": "^0.25.2", - "vite": "4.4.11", + "vite": "4.5.0", "vite-plugin-compression": "^0.5.1", "vite-plugin-ejs": "^1.6.4", "vite-plugin-eslint": "^1.8.1", @@ -129,7 +129,7 @@ "vite-plugin-svg-icons": "^2.0.1", "vite-plugin-top-level-await": "^1.3.1", "vue-eslint-parser": "^9.3.2", - "vue-tsc": "^1.8.19" + "vue-tsc": "^1.8.20" }, "license": "MIT", "repository": { From 96db6ab53880f97585f163981f71d7143f0c8823 Mon Sep 17 00:00:00 2001 From: xingyu Date: Wed, 25 Oct 2023 10:35:10 +0800 Subject: [PATCH 06/18] chore: vscode setting --- .vscode/settings.json | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 45156944..1d3f0aa8 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,5 +1,5 @@ { - "typescript.tsdk": "./node_modules/typescript/lib", + "typescript.tsdk": "node_modules/typescript/lib", "npm.packageManager": "pnpm", "editor.tabSize": 2, "prettier.printWidth": 100, // 超过最大值换行 @@ -86,15 +86,12 @@ "source.fixAll.eslint": true }, "[vue]": { - "editor.codeActionsOnSave": { - "source.fixAll.eslint": true, - "source.fixAll.stylelint": true - } + "editor.defaultFormatter": "rvest.vs-code-prettier-eslint" }, "i18n-ally.localesPaths": ["src/locales"], "i18n-ally.keystyle": "nested", "i18n-ally.sortKeys": true, - "i18n-ally.namespace": true, + "i18n-ally.namespace": false, "i18n-ally.enabledParsers": ["ts"], "i18n-ally.sourceLanguage": "en", "i18n-ally.displayLanguage": "zh-CN", From 50f1ae9524a09916f5dced435803fdd18181500c Mon Sep 17 00:00:00 2001 From: xingyu Date: Wed, 25 Oct 2023 10:35:20 +0800 Subject: [PATCH 07/18] chore: eslint config --- .eslintrc.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 72d4664b..f2977df6 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -8,7 +8,6 @@ module.exports = defineConfig({ es6: true }, parser: 'vue-eslint-parser', - plugins: ['vue'], parserOptions: { parser: '@typescript-eslint/parser', ecmaVersion: 2020, @@ -26,9 +25,9 @@ module.exports = defineConfig({ '@unocss' ], rules: { + 'vue/no-setup-props-destructure': 'off', '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', @@ -54,6 +53,7 @@ module.exports = defineConfig({ 'vue/attribute-hyphenation': 'off', 'vue/require-default-prop': 'off', 'vue/require-explicit-emits': 'off', + 'vue/require-toggle-inside-transition': 'off', 'vue/html-self-closing': [ 'error', { From bf2c59c6e04bb05a933691c368bc318bca3dffe3 Mon Sep 17 00:00:00 2001 From: xingyu Date: Wed, 25 Oct 2023 10:35:30 +0800 Subject: [PATCH 08/18] chore: stylelint config --- stylelint.config.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/stylelint.config.js b/stylelint.config.js index b970bd25..890b45bc 100644 --- a/stylelint.config.js +++ b/stylelint.config.js @@ -16,8 +16,8 @@ module.exports = { ignoreAtRules: ['function', 'if', 'each', 'include', 'mixin'] } ], - // 命名规范 - "selector-class-pattern": null, + 'media-query-no-invalid': null, + 'function-no-unknown': null, 'no-empty-source': null, 'named-grid-areas-no-invalid': null, 'unicode-bom': 'never', @@ -215,6 +215,8 @@ module.exports = { extends: ['stylelint-config-recommended', 'stylelint-config-html'], rules: { 'keyframes-name-pattern': null, + 'selector-class-pattern': null, + 'no-duplicate-selectors': null, 'selector-pseudo-class-no-unknown': [ true, { From 238537df83915075bd0a2230e0034c4628f5d1f5 Mon Sep 17 00:00:00 2001 From: xingyu Date: Wed, 25 Oct 2023 10:36:06 +0800 Subject: [PATCH 09/18] fix: ElLoading need import --- src/views/Login/components/MobileForm.vue | 1 + 1 file changed, 1 insertion(+) diff --git a/src/views/Login/components/MobileForm.vue b/src/views/Login/components/MobileForm.vue index ff9069f4..7f5d9942 100644 --- a/src/views/Login/components/MobileForm.vue +++ b/src/views/Login/components/MobileForm.vue @@ -102,6 +102,7 @@ import { usePermissionStore } from '@/store/modules/permission' import { getTenantIdByName, sendSmsCode, smsLogin } from '@/api/login' import LoginFormTitle from './LoginFormTitle.vue' import { LoginStateEnum, useFormValid, useLoginState } from './useLogin' +import { ElLoading } from 'element-plus' defineOptions({ name: 'MobileForm' }) From 309c3f30d10a3aacd96cb453f1a6bf9ddb48e3ce Mon Sep 17 00:00:00 2001 From: xingyu Date: Wed, 25 Oct 2023 10:43:03 +0800 Subject: [PATCH 10/18] chore: remove vue-macros/volar --- package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.json b/package.json index 1928bf5e..21a731a8 100644 --- a/package.json +++ b/package.json @@ -91,7 +91,6 @@ "@vitejs/plugin-legacy": "^4.1.1", "@vitejs/plugin-vue": "^4.4.0", "@vitejs/plugin-vue-jsx": "^3.0.2", - "@vue-macros/volar": "^0.17.1", "autoprefixer": "^10.4.16", "bpmn-js": "8.9.0", "bpmn-js-properties-panel": "0.46.0", From ca385bc08e10bde121423aa9e422dad03ab81c14 Mon Sep 17 00:00:00 2001 From: puhui999 Date: Wed, 25 Oct 2023 11:14:00 +0800 Subject: [PATCH 11/18] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=88=97=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E4=B8=AD=E7=9A=84=20table#header=20=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E4=B8=8D=E5=88=B7=E6=96=B0=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/mall/trade/order/detail/index.vue | 16 ++++++++-------- src/views/mall/trade/order/index.vue | 18 +++++++++++++----- src/views/member/user/detail/UserOrderList.vue | 3 ++- 3 files changed, 23 insertions(+), 14 deletions(-) diff --git a/src/views/mall/trade/order/detail/index.vue b/src/views/mall/trade/order/detail/index.vue index 38b9342e..67e54767 100644 --- a/src/views/mall/trade/order/detail/index.vue +++ b/src/views/mall/trade/order/detail/index.vue @@ -16,7 +16,7 @@ - + {{ formData.brokerageUser?.nickname }} @@ -26,7 +26,7 @@ - + {{ formData.receiverMobile }}
- + {{ formData.receiverAreaName }} {{ formData.receiverDetailAddress }} - + {{ deliveryExpressList.find((item) => item.id === formData.logisticsId)?.name }} - + {{ formData.logisticsNo }} - + {{ formatDate(formData.deliveryTime) }} - +
- + {{ pickUpStore?.name }}
diff --git a/src/views/mall/trade/order/index.vue b/src/views/mall/trade/order/index.vue index e08715df..c892292a 100644 --- a/src/views/mall/trade/order/index.vue +++ b/src/views/mall/trade/order/index.vue @@ -125,10 +125,10 @@